내일배움캠프 5일차 TIL . C#다시 시작

최보훈·2023년 12월 29일
0

TIL

목록 보기
3/28

새로운 강의주의 시작

새로운 강의주차가 시작되었다. 이번 주차는 C#의 기초와 시작, 이후 텍스트 RPG를 만들어보는 과정을 진행한다고 한다. C#의 기초 문법 강의는 빠르게 넘기면서 새롭게 배운 내용들과 사소하게 생각해 넘겨짚어 생각했던점들만 따로 정리하고자 한다.

Escape Sequence

Escape Sequence = 문자열 내에 특수한 문자를 포함시키기 위해 사용되는 특별한 문자 조합.

이전까진 "/n"만 많이 사용했어서 다른 Escape Sequence에 대해서는 관심이 없었는데 이 기회에 알게 되었다.

리터럴

프로그램에서 직접 사용되는 상수 값
소스코드에 직접 기록되어 있는 값.

  • Ex
    • 정수형 리터럴
      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

0개의 댓글