日期:2014-05-20  浏览次数:20728 次

C#中的属性 和 java中的域
C#中的属性和java中的域是一个概念吗?

最近看到一些code,感觉两者之间有些差别,希望有牛人指点一下,小弟先多谢了!

------解决方案--------------------
java里面也叫属性

属性+方法
------解决方案--------------------
探讨
java里面也叫属性

属性+方法

------解决方案--------------------
探讨
恩,我也觉得应该是一样的,可是一天在一本老外的windows forms的书里,有这样一段代码,您看有什么特别的意思没:

public class Photograph
{
Private string _filename;
....

Public string FileName
{
get  { return _filename; }
}

....
}

他给的代码中,所有的public属性都对应一个类的private的私有成员变量,这是为什么呢?

------解决方案--------------------
C#中的“属性”其实是对一个字段的get和set方法(好像C#里叫做访问器)
在对属性赋值时执行相应的set方法,取属性值时执行相应的get方法
在写法上和直接访问公有字段是一样的,但是访问公有字段时只是简单地存取字段值,而访问属性时由于是通过调用方法实现的,因此可以实现更多功能(虽然大多数时候方法内部也只是存取相应的字段),这样做的好处如下
C# code

photo._filename = "xxx"    //假设_filename不是private而是public
和
photo.FileName = "xxx"