C# 배우고 있는데 아래 같은 상황에 프로퍼티와 변수의 차이가 뭔지 모르겠습니다.


예를 들어서 프로퍼티가


private string name;

public string Name

{

get

{

return name;

}

set

{

name = value;

}

}


처럼 닫혀진 한정자가 있는 변수를 참조하기 위해서 사용되지 않습니까


그런데 이 프로퍼티를 필드까지 생략해서 아래와 같이 쓸 수 있다 배워쑵니다


public string Name

{

get; set;

}


아니 근데 말입니다 이런식이면

그냥 Name이라는 이름의 public 한정자 string 변수가 만들어지는 것과 비슷하지 않습니까?


물론 프로퍼티를 선언한 클래스에서는 변수처럼 사용하지는 못하지만

결국 다른 클래스에서는 아래와 같이 쓸 수 있으니까요


class Project

{

public string name;

public string Name;

{

get; set;

}

}


class MainClass

{

static void Main(string[] args)

{

Project obj = new Project();

obj.name = "Kim"

obj.Name = "Park"

}

}


이렇게요!

Name이던 name이던 값을 읽고 쓸 수 있는 건 마찬가지인데

대체 위 코드에서 프로퍼티 Name과 변수 name의 결정적 차이가 뭔지 잘 모르겠습니다