您的位置:首页 > 其它

为什么在属性中设置private set

2015-07-06 22:38 197 查看
引言:  

  属性的引入来自C#的封装机制,也就是说对象的内部数据不应该由对象实例来直接访问,我们可以使用传统的Get和Set方法,来封装字段,C#为我们提供了语法糖,也就是属性。属性包括get和set,分别用来访问数据和修改数据,实际上编译器也同样会把属性编译成两个方法,但是在代码中经常会遇到private set的用法,代码如下:

public class Test
{
private string name;
public string Name
{
get { return name; }
private set { name = value; }
}
}


为什么引入private set?

  有时候,我们并不希望由实例对象在外部,轻松的修改内部字段的值,如t.Name="SharpL",目的是为了保护内部数据。

怎么实现的保护?

  将set设置成为string,实际上也就是将set方法设置成了私有方法,C#中对象是无法访问类中的私有成员的,所以下面的代码将无法通过编译,如图:



如何修改数据呢?

  通过构造函数,或者其他公共方法,代码如下:

public Test()
{
name = "SharpL";
}

public void  DoSth()
{
name = "LSharp";
}


参考:

  private set和不设置set的区别

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: