Fer*_*hat 6 c# encapsulation properties member
目前我在思考C#中的数据封装,我有点困惑.几年前,当我开始用C++学习编程时,我的教授告诉我:"创建一个类并隐藏它的数据成员,所以它不能直接从外部操作"
示例:您正在解析XML文件并将解析后的数据存储到解析器类中的某些数据成员中.
现在,当我在看C#时.你有那里的财产.此功能使类的内部状态/内部数据对外可见.没有封装了.对?
private string _mystring;
public string MyString
{
get {return _mystring;}
set {_mystring = value;}
}
Run Code Online (Sandbox Code Playgroud)
从我的角度来看,将数据成员公开或具有公共属性(具有getter和setter)的公共属性与传递私有数据成员之间没有区别.
有人可以解释我吗?
谢谢
Ree*_*sey 15
私有数据由属性本身封装.访问数据的唯一方法是通过属性.
在您的情况下,没有理由使用该属性.但是,如果您以后需要添加一些验证,则可以在不破坏API的情况下,即::
private string _mystring;
public string MyString
{
get {return _mystring;}
set
{
if (IsAcceptableInput(value))
_mystring = value;
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,.NET中的一个属性实际上只是两种方法的更简洁的语法 - 属性获取部分的一种方法,属性集部分的一种方法.它提供了与C++中的一对方法相同的封装,但是(可以说)更好的语法用于使用.
| 归档时间: |
|
| 查看次数: |
9788 次 |
| 最近记录: |