본문 바로가기
C#

복사(값)와 참조

by Mostlove 2023. 7. 4.
728x90
반응형


using static CSharp.Program;

namespace CSharp
{
    //객체 (OOP Object Oriented Programming)
    //Knight
    //속성 : hp , attack, pos;
    //기능 : Move, Attack, Die;
    class Knight
    {
        public int hp;
        public int attack;
        public Knight Clone()
        {
            Knight knight = new Knight();
            knight.hp = hp;
            knight.attack = attack;
            return knight;
        }
        public void Move()
        {
            Console.WriteLine("Knight Move");
        }
        public void Attack()
        {
            Console.WriteLine("Knight Attack");

        }

    }
    struct Mage
    {
        public int hp;
        public int attack;
    }
    class Program
    {
        static void KillMage(Mage mage)
        {
            mage.hp = 0;
        }
        static void KillKnight(Knight knight)
        {
            knight.hp = 0;
        }
        static void Main(string[] args)
        {
            Mage mage;
            mage.hp = 100;
            mage.attack = 50;
            KillMage(mage);

            Mage mage2 = mage;
            mage2.hp = 0;

            Knight knight = new Knight();
            knight.hp = 100;
            knight.attack = 10;
            
            Knight knight2 = knight.Clone();
            knight2.hp = 0;

        }
    }
}

반응형

'C#' 카테고리의 다른 글

생성자  (0) 2023.07.05
스택과 힙  (0) 2023.07.05
객체 지향  (0) 2023.07.04
텍스트 알피지!!  (0) 2023.07.04
디버깅 기초  (0) 2023.07.04