순서

I. Struct
II. Struct Example

 


I. Struct

 

C++과 다를 바 없다. Class와 용도가 비슷하다고 보면 된다.

Refactoring 하면서 알게된 부분은 Struct는 주로 데이터만 집합해 둔 곳인데
결국 이 Struct를 Class로 한 단계 올려주면서 Method까지 지원해주는게 좋다!

[특징]

1. 구조체 내의 필드는 static, const로 선언시에만 초기화 가능함.
2. 생성자에서 초기화 시켜주어야 한다.
3. 매개변수가 없는 기본 생성자 정의 X, 매개변수가 있다면 정의 가능
4. 선언된 구조체 value는 new로 생성함에도 불구하고 Stack에 저장된다.
    -> class는 Reference Type으로 Heap에 저장된다.
5. 임시적으로 System.ValueType에서 상속된다. -> 이 공간은 int double..등이 있는 공간

 


II. Struct Example

 

using System;

namespace StructApp {
  public struct StuPoint {
    public StuPoint (int X, int Y) {
      this.x = X;
      this.y = Y;
    }
    public int x;
    public int y;
  }
  
  public class CMain() {
    static void Main() {
      StuPoint P1 = new StuPoint();
      StuPoint P2 = new StuPoint(1,2);
      Console.WriteLint($"{P1.x}, {P1.y}, {P2.x}, {P2.y}");
    }
  }
}

0 0 1 2 출력

매개변수를 넘겨주지 않고 생성시 0, 0 이 대입되고
매개변수를 넘겨주고 생성시 1,2 대입되었다. 즉, 생성자 매개변수 형식에 강제되지 않는다.

+ Recent posts