为什么我需要使用get和set?

Sim*_*ons 13 .net c# oop encapsulation

我有一个代码段:

public class MyClass
{
    private string _myProperty;

    public string MyProperty
    {
        get
        {
            return _myProperty;
        }

        set
        {
            _myProperty = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这有什么意义?我可以将_myProperty字符串声明为public,并且我的任何类对象都可以直接访问它们并获取或设置值.

相反,我们_myProperty使用类对象使私有和使用get和set来访问它们.

在任何一种情况下,类对象都能够访问它们,结果总是相同的.

那么为什么要用这种方法?这只是因为我可以在setter中实现一些约束吗?

除此之外会对成员变量造成什么危害呢?在这个例子中,我可以公开_myProperty公开,而不是像OOP所暗示的那样将它限制在这个类中.

Jon*_*eet 18

不,结果并不总是一样的.

  • 尝试绑定到公共字段(或执行任何其他使用反射和期望属性的字段)
  • 尝试通过引用传递属性(你不能)
  • 稍后尝试确定您希望记录等,并发现当您将其更改为属性时,您将失去源和二进制兼容性.

阅读我刚才写这篇文章 ......

请注意,从C#2开始,您的代码可以缩短很多:

public class MyClass
{
    public string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)