在以前学习中知道有一个类的属性和方法,但是学习了c#之后还有一个叫字段的,刚开始我以为字段和属性是同一回事,可是到我学习了Property之后才知道,这是不同的,那么他们的不同点是什么?
请高手指教一下。
请高手指教一下。
解决方案 »
- 关于c# 操作Word的程序关闭Word文档时弹出对话框的问题
- 做一个软件自动更新功能,app.config配置文件要怎么写呢?
- 如何给.NET安装程序加密
- xml导入至DATASET报错
- 页面刷新回值问题
- 请问怎么利用正则表达式把多个IMG标记,如<IMG src='W020060602336380788600.jpg'>中的W020060602336380788600.jpg提取出来,谢谢!
- c# Winform有能支持IE,Firefox,Chrome,Safari浏览器的控件吗?
- 如何使winform软件中的文字实现链接?
- C#教程推荐一本
- _command.Connection.State 这个东西我如何知道它的值?
- 由N个点组成的凸多边形的问题(100分求不够再加,顶着有分)
- 象这样document后面还有内容的xml用XmlWriter要如何生成
其实有些属性能实现的功能,字段也能实现,但是不鼓励用字段来实现,因为OOP和编程的一个原则就是数据封装,意味着我们不应该将字段的类型以公开的方式提供给外界。
还有一些原因,例如我们可能希望访问一个字段的同时执行一些额外的操作,或者缓存某个数值,或者延迟创建某个内部对象。
我们也可能希望对字段的访问是线程安全的。或者字段可能只是一个逻辑表示,其真正的值并不是以字节的形式存放在内存中,而是通过某种算法计算得来的
所以建议将所有的字段访问限制为私有
{
get { return id; }
set { id = value; }
}
字段和属性都可以输入,所以可以把信息存储在字段和属性中,作为string变量、int变量等。但是,属性与字段是不同的,因为属性不能直接访问数据。对象能让用户不考虑数据和细节,不需要在属性中用一对一的方式表示。如果在CupOfCoffee实例中使用一个字段表示方糖的数量,用户就可以在该字段中放置自己喜欢的值,其取值范围仅由存储信息的类型来限制。例如,如果使用int来存储这个数据,用户就可以使用-2147483648~2147483647之间的任意值,显然,并不是所有的值都是有意义,尤其是负值,一些较大的正值将需要非常大的对象。但如果使用一个属性来表示,就可以限制这个值,例如为0~2之间的一个数字。一般情况下,在访问状态时最好提供属性,而不是字段,因为这样可以更好地控制整个过程,这个选择不会影响使用对象实例的代码,因为使用属性和字段的语法是相同的。