c# 클래스의 필드를 public으로 만들어 써도 되는 경우

클래스 안에 만들어지는 프라퍼티와 필드는 데이터를 저장하는 데에 있어서는 기능하는 게 비슷하다. 이들 사이에서 어떤 걸 써야 하나 애매하다.

필드에 접근하려면 public으로 만들어야 한다. 마이크로소프트는 필드를 퍼블릭으로 만들지 말라고 한다. 필드를 퍼블릭으로 만들지 않으면 필드에 직접 접근할 수 없다. 프라퍼티를 만들어서 거쳐야 한다. 복잡하다.

프라퍼티만 만들어서도 필드를 대체할 수 있다. 뒤에 { get; set; }를 붙여야 한다. 번거롭다.

class Class1
{
    public string String1;
    public string String2 { get; set; }
}

private void Form1_Load(object sender, EventArgs e)
{
    Class1 class1 = new();

    class1.String1 = "abcde";
    class1.String2 = "qwert";

    Text = class1.String1 + class1.String2;
}

클래스에는 많은 기능들이 있다. 클래스를 c++의 struct에 대응하는 데이터 컨테이너 기능으로만 쓸 거면 굳이 프라퍼티를 이용하지 않아도 된다. 필드를 퍼블릭으로 만들어서 써도 문제될 거 없다.

DO NOT provide instance fields that are public or protected.
Field Design