代码比较 - 哪个更好或更不必要?

hax*_*mer 0 c#

可能重复:
C#中属性和字段之间的差异

public class Test
{
    public bool testData1;
    public string testData2;
}
Run Code Online (Sandbox Code Playgroud)

要么

public class Test
{
    public bool TestData1 { get; set; }
    public string TestData2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

要么

public class Test
{
    private bool testData1;
    private string testData2;

    public bool TestData1 { get { return testData1; } set { testData1 = value; } }
    public string TestData2 { get { return testData2; } set { testData2 = value; } }
}
Run Code Online (Sandbox Code Playgroud)

哪种优化代码更好或更不必要?为什么?

这不是最后一个持有很多不必要的数据吗?

=======编辑:

在那种情况下我想:

public class Test
{
    public Test(bool testData1)
    {
         this.testData1 = testData1;
    }
    private bool testData1;

    public bool TestData1 { get { return testData1; } }
    public string TestData2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在背景中有字段是必需的.不是吗?

Bro*_*ass 8

你不应该有公共字段,而是使用属性,这样你就可以在必要时更改内部实现 - 所以2)获胜.3)是如何在引擎盖下实现自动属性所以相当于2)


Chr*_*ain 5

第二个是等价的.说同样的事情只是不同的语法.

第一个是不同的 - 它暴露了字段,而不是属性.字段和属性之间的差异已经在网络上出现了恶心.