맴버변수가 아니라 Property 입니다. 맴버변수는 Field라고도 불리며 뒤에 { get; set; } 이 붙지 않습니다.
정말 메모리 공간 그 자체가 있는 것이고, get set에 대해서 특정 동작을 할 수 없습니다.
따라서 다음과 같습니다.
public string MyName { get; set; }
은
private string _MyName;
public string MyName
{
get => _MyName;
set
{
_MyName = value;
}
}
입니다. private에 '_'가 붙어 있는 것을 Backing Field 라고 합니다.
왜 Property가 중요하냐면, Interface라는 것 때문입니다. Field는 Interface를 통해 다형성 제공을 할 수 없고, Property는 GetValue, SetValue Method 개념이기 때문에 다형성 제공이 가능합니다.
그리고 개인적으로 생성자라는 Return 형이 없고 클래스와 이름이 같은 함수는 '초기화’의 기능을 담당합니다. 이 생성자는 작성하신 Custom Class를 재귀적으로 하여 Class가 상속하고 있는 생성자를 재귀적으로 호출하며 Object의 생성자까지 타고 올라가서 호출하게 됩니다.
C#에서 문법적으로 편리하게 제공은 하지만, 생성자에서 초기화를 명시적으로 적어주는 것이 추후 유지보수 할 때는 좋다고 생각합니다.
물론 간단하고 빠르게 만들고 수정이 빈번하지 않는 작업을 한다면 문법에서 제공하는 편의도 이용하는 것이 현명하다고 생각합니다.