c#中接口中为什么可以定义属性,属性和字段不是联系在一起的吗?我是从Java转过来的,我的理解就是:Java中的属性就是C#中的字段,Java中的getter和setter方法就是C#中的属性(C#)中的属性不就是对字段操作的吗?我感觉属性和字段就是形影不离的双胞胎(虽然有时候限制字段只读或者是只写)为什么接口中不允许定义字段却可以存在属性,虽然属性没有返回值?
解决方案 »
- CheckedComboBoxEdit怎么显示多列
- .net 2.0读取词典文件到集合dictionary中有没有什么快速的方法?
- C#读取vb编写的exe文件的数据
- C#窗体请教隐藏不关闭
- 帮忙解释一个语句
- replace的问题
- 100分求解!RSA的加,解密问题,高手请进(愚翁请进来看看)~~
- 太难了!!!!!!!C#调用DLL,出现尝试读取或写入受保护的内存错误
- 使用RenderTargetBitmap将控件生成图片默认从window读取
- 在学 C # 之前,你用的是什么语言。用什么的转过来较容易? 有没有用 PB 的?
- 拖动窗体时在窗体边缘显示虚框
- 这几行代码什么具体含义,关于设置保存文本文件
而具体怎么安排字段,要什么字段,字段在内存的位置,则是内部细节,接口不应该管这么宽。属性的确就是getter和setter,但独立出来成为单独的类别,使它更自然,使得那些对象愿意对外展示的属性(颜色,大小,年纪等),不用通过粗笨的方法来得到。比如WinForm下的PropertyGrid,就专门显示对象的属性,而不理睬字段或方法。
{
void sayHello();//不难理解,接口就是一个约定,当然不用实现
string Hello//这里的属性我就理解不动了,字符串类型的变量Hello无缘无故的就出现了
{
get;
set;
}
//可能受Java语法上的影响,接口中没有无缘无故的“变量”(属性?字段?)}我的理解是这里的Hello属性无比要跟一个字段联系起来,会不会实现类在继承接口时候再去声明字段?我已经说不清楚了,Java中属性是c#中的字段,一会字段一会属性,呼呼!!!
跟sayHello是一样的
强制它的继承者必须用get set 构造这个Hello我觉得:接口就像个更纯粹的抽象类
C#3.0的类里面可以出现这种写法的:
public string Hello { get; set; }
这是所谓的自动属性,编译器会自动创建相应的私有字段的
如果该字段只能由该属性来访问的话,这样可以节省无意义的工作~