출처 : https://www.youtube.com/watch?v=Cq4olyGLk3g&list=PL4SIC1d_ab-Y-bBKojxhtFWwNpawMM1h5&index=12
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Monster
{
public int AT = 10;
public int HP = 100;
public void ATT(Player _Player)
{
// 플레이어의 HP는 얼마일까요?
// 100 - 10 = 90
_Player.HP -= AT;
}
}
class Player
{
public int AT = 10;
public int HP = 100;
// Monster _Monster 클래스가 객체화된 녀석을 받았다.
public void ATT(Monster _Monster)
{
_Monster.HP -= AT;
}
public void TEST(int _Test)
{
_Test = 1000;
}
}
namespace Memory_Reference
{
class Program
{
static void Main(string[] args)
{
// * 값형과 레퍼런스형을 구분할줄 알아야 한다!
// * 기본 자료형을 선언만 하면 그녀석들은 값형이다.
// * 자기가 만든 클래스를 new 클래스명();
// * 해서 만든 것을 그 클래스명에 받으면
// * 그건 레퍼런스 형이다.
// 클래스가 객체화된 녀석은
// 레퍼런스형이라고 하는 자료형이 되고
// 여러분들이 여태까지 봐왔던
// int, bool 이런 녀석들은 값형이라고 한다.
// 이 값형과 레퍼런스형은
// 메모리의 위치와 사용법이 다르기 때문에
// 다르게 동작한다
// HP = 100
// AT = 10
// 이 레퍼런스라고 하는 녀석은
// 힙에 생성된 어떠한 메모리의 위치를 가리키는 값이다.
// 클래스를 자료형으로 만든 레퍼런스의 역할은
Monster NewMonster = new Monster();
// HP = 100
// AT = 10
Player NewPlayer = new Player();
// 얕은 이해는
// .은 안에 값을 끌어내고 싶으면 . 누르면 된다
// 정확한 이해는
// 내가 가리키고 있는 위치에 있는 HP를 사용하겠다.
// 전 강의에서 배웠던 대로라면
// 플레이어가 자신의 공격력으로
// 몬스터를 때린것이지만 적용될리가 없을 것이다
// 라고 잘못 이해할 수 있다.
// 둘의 HP는 90으로 깎이게 된다.
NewMonster.ATT(NewPlayer);
Console.WriteLine(NewPlayer.HP);
// 플레이어의 HP가 깎인 것인 보인다
NewPlayer.ATT(NewMonster);
Console.WriteLine(NewMonster.HP);
//int value = 100;
//NewPlayer.TEST(value);
}
}
}
'C# 개인 공부 기록용 > 어소트락 게임아카데미 - C# 무료강의[2019] 총48강' 카테고리의 다른 글
[C# 강의 15화] !중요! this 레퍼런스 (0) | 2022.07.05 |
---|---|
[C# 강의 13화, 14화] !중요! 맴버함수의 기본개념 , static 함수 & static class (0) | 2022.07.04 |
[C# 강의 11화] !중요! 값형의 메모리 구조 및 처리 개념 (0) | 2022.07.04 |
[C# 강의 10화]실행되는 함수의 메모리 구조 (0) | 2022.07.04 |
[C# 강의 8화] 함수 용법 추가설명 (0) | 2022.07.04 |