当生成一个类时,为什么要为属性使用get/set,而不仅仅是将其公开

本文关键字:get set 不仅仅是 属性 一个 为什么 | 更新日期: 2023-09-27 18:28:18

与第二个解决方案相比,第一个解决方案的优势是什么?

class TestClass
    {
        public int value
        {
            get;
            set;
        }
    }
    static void Main()
    {
        var myTest = new TestClass();
        myTest.value = 3;
        System.Console.WriteLine(myTest.value);
    }
}

class TestClass
    {
        public int value;
    }
    static void Main()
    {
        var myTest = new TestClass();
        myTest.value = 3;
        System.Console.WriteLine(myTest.value);
    }

我已经在SO上搜索过这个问题,但我一直看到的最重要的答案是,如果你需要更改设置/获取的方式(添加验证或其他),你不需要回到你的代码中,并在使用属性的任何地方添加它。如果您确实需要添加此验证,难道不能将其从示例二更改为示例一而不进行任何其他更改吗?我的理解是,即使你想在get/set中添加一些验证,你也不能像我的例子那样使用自动生成的方式,无论如何都需要更改它。如果是这样的话,为什么还要设置get/set?

当生成一个类时,为什么要为属性使用get/set,而不仅仅是将其公开

Getters和Setters至少有两个常见用途:第一个是将您的c/c++代码暴露给脚本语言(例如Lua),第二个是提供对可能的非原子数据类型的线程安全原子访问(即,为您提供首选的线程安全机制)。