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

本文关键字:不必要 更好 比较 代码 | 更新日期: 2023-09-27 18:23:37

可能重复:
C#中属性与字段的区别

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

public class Test
{
    public bool TestData1 { get; set; }
    public string TestData2 { get; set; }
}

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; } }
}

哪种优化的代码更好还是不必要?为什么?

最后一个不是包含了很多不必要的数据吗?

======编辑:

我认为在这种情况下:

public class Test
{
    public Test(bool testData1)
    {
         this.testData1 = testData1;
    }
    private bool testData1;
    public bool TestData1 { get { return testData1; } }
    public string TestData2 { get; set; }
}

需要在背景中具有字段。不是吗?

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

您不应该有公共字段,而是使用属性,这样您就可以在必要时稍后更改内部实现-因此2)获胜。3) 就是在引擎盖下实现自动属性的方式,因此相当于2)

后两者是等价的。只是说同样的话有不同的语法。

第一种不同——它公开字段,而不是属性。字段和属性之间的差异在网络上被报道得令人作呕。

第二个和第三个是相同的。首先是不好的,因为若您更改了某些内容(名称、类型),那个么就破坏了类接口。

在生产代码中使用数字1应该是不可能的,因为有公共字段肯定是封装使用不当的标志。

数字2和数字3是相似的,但有一个重要的区别:如果您计划序列化您的类,您应该更喜欢#3,因为您对可以序列化的变量有更严格的控制。除此之外,#2和#3是相同的。我总是从#2开始,只有在必要的时候才会选择#3。

第一个示例与其他两个示例在语义上不同。

在第一个示例中,您使用的是字段而不是属性。

第二个例子相当于第三个例子;编译器将自己生成支持字段。因此,第二个例子更容易阅读,而且imho更干净。

关于您编辑的问题:没必要。你完全可以做到这一点:

public class MyClass
{
    MyClass( bool x )
    {
       TestData1 = x;
    }
    public bool TestData1
    {
       get;
       private set;
    }
}
相关文章: