public static void Main(string[] args) { //클래스가 객체화된 친구는 //레퍼런스 형이라고 하는 자료형이 되고 //우리가 계속 바왔던 //int bool 이런 친구는 값형이라고 함 //값형과 레퍼런스형은 메모리의 위치와 사용법이 다르기 때문에 //다르게 동작한다 Monster NewMonster = new Monster(); //몬스터만들고 // HP 100 AT10 Player NewPlayer = new Player(); //플레이어 만들고 //우리가 전강의에서 배웠던 대로라면 //플레이어가 자신의 공격력으로 //몬스터를 떄린거죠 //하지만 적용될일없음 //잘못 이해할수 있음 NewMonster.ATT(NewPlayer); NewPlayer.ATT(NewMonster); //int Value = 100; //NewPlayer.TEST(Value); }
static void Main(string[] args) { Monster NewMonster = new Monster(); //객체화가 된다// Player NewPlayer = new Player(); //자기가 만든 클ㄹ래스를 뉴 클래스명() 해서 만든것은 그 클래스명에 받으면 레퍼런스형 NewMonster.ATT(NewPlayer); //리퍼런스 값은 클래스의 위치는 가르켜서 그 값으 쓰는 것// NewPlayer.ATT(NewMonster); }
// 클래스가 객체화된 것은 레퍼런스 형이라 하고 // int bool 같은 것은 값형이라고 한다 // 이 값형과 레퍼런스형은 메모리의 위치와 사용법이 다르기 때문에 // 다르게 동작한다. static void Main(string[] args) { // Monster NewMonster는 스택에 생기고 new Monster(실제 만들어진 몬스터)는 힙에 생긴다 // 이 레퍼런스는 힙에 생성된 어떠한 메모리의 위치를 가리키는 값이다 Monster NewMonster = new Monster(); Player NewPlayer = new Player(); // .의 의미 : 가리키고 있는 위치의 ATT를 사용하겠다 // NewMonster.ATT는 스택에 만들어지고 실제 만들어진 Player를 가리킨다 // (Player NewPlayer가 실제 만들어진 Player를 가리키듯이) // 그러므로 실제 만들어진 Player의 값이 변할 수 있다(11강의 value와 다르게) NewMonster.ATT(NewPlayer); NewPlayer.ATT(NewMonster); }
static void Main(string[] args) { // 클래스가 객체화된 녀석은 // 레퍼런스 형이라는 자료형이 되고 // 여태까지 봐왔던 // Int, bool 이런 녀석들은 값형이라고 한다. // 이 값형과 레퍼런스형은 메모리의 위치와 사용법이 다르기 때문에 // 다르게 동작한다. Monster NewMonster = new Monster(); Player NewPlayer = new Player(); // 레퍼런스 -> 생성하는 순간 힙에 들어감. 그보다 더 정확한 표현은↘ // 레퍼런스 --> 힙에 생성된 어떤 메모리의 위치(레퍼런스)를 가르키는 값. // new를 한다는 게 힙 영역에 넣는다는 뜻 //값형과 레퍼런스형을 구분할 줄 알아야 함. // 기본 자료형을 선언만 하면 그녀석들은 값형. // 자기가 만든 클래스를 new 클래스명(); //해서 만든걸을 그 클래스명에 받으면 그건 레퍼런스형. NewMonster.ATT(NewPlayer); NewPlayer.ATT(NewMonster); Console.WriteLine(NewMonster.HP); Console.WriteLine(NewPlayer.HP); //스택 : 함수의 실행 메모리 영역(그 영역 안에 들어있는 지역변수 할당) //힙 : new 클래스명() 만들어진 클래스 객체들의 본체가 있는 영역 Console.ReadKey(); }