새로운 강의주차가 시작되었다. 이번 주차는 C#의 기초와 시작, 이후 텍스트 RPG를 만들어보는 과정을 진행한다고 한다. C#의 기초 문법 강의는 빠르게 넘기면서 새롭게 배운 내용들과 사소하게 생각해 넘겨짚어 생각했던점들만 따로 정리하고자 한다.
Escape Sequence = 문자열 내에 특수한 문자를 포함시키기 위해 사용되는 특별한 문자 조합.
이전까진 "/n"만 많이 사용했어서 다른 Escape Sequence에 대해서는 관심이 없었는데 이 기회에 알게 되었다.
프로그램에서 직접 사용되는 상수 값
소스코드에 직접 기록되어 있는 값.
1o int
0X10 16 int
0b10 2 int
10L Long
10UL unsigned Long
3.14 double
3.14f float
3.14m decimal
작은 데이터 타입에서 더 큰 데이터 타입으로 대입하는 경우 발생.
일반적으로 부모 클래스에서 정의되고 자식 크래스에서 재정의 할 수 있는 메서드이다.
virtual
키워드를 사용해서 선언된다.
Ex
```C#
public class Unit
{
public void Move()
{
Console.WriteLine("두발로 걷기");
}
public void Attack()
{
Console.WriteLine("Unit 공격");
}
}
public class Marine : Unit
{
}
public class Zergling : Unit
{
public void Move()
{
Console.WriteLine("네발로 걷기");
}
}
```
저글링은 현제 부모의 Move()
메서드를 재 정의하고있다.
위 코드에서 Marine.Move()
와 Zergling.Move()
를 실행한 경우 마린은 부모의 메서드, 저글링은 자식의 메서드를 실행하게 된다. 이 경우에선 문제가 발생하지 않지만,
```
List<Unit> list = new List<Unit>();
list.Add(new Marine());
list.Add(new Zergling());
foreach (Unit unit in list)
{
unit.Move();
}
```
위와같이 부모의 형태로 메서드를 사용하느 경우 저글링의 Move()
또한 재정의한 메서드가 아닌 부모의 메서드를 실행하게 된다.
이와같은 문제를 해결하기 위해 가상 메서드가 사용된다.
public class Unit
{
public virtual void Move()
{
Console.WriteLine("두발로 걷기");
}
public void Attack()
{
Console.WriteLine("Unit 공격");
}
}
public class Marine : Unit
{
}
public class Zergling : Unit
{
public override void Move()
{
Console.WriteLine("네발로 걷기");
}
}
위와같이 사용하게 된다면 부모의 형태로 사용하더라도 자식의 재정의한 메서드로 실행을 하게 된다. s