use*_*677 5 c# properties interface
根据定义:
"由于接口本身不是一个对象,我无法初始化它.如果允许接口声明文件,那么它需要存储位置,所以我们不能在接口内声明字段."
有财产说的例子
当我宣布
string SayHello { get; set; }
Run Code Online (Sandbox Code Playgroud)
在界面内
它get_SayHello( ) ,set_SayHello()在IL 内部挂钩 (当我反汇编时,我可以看到get和set方法).
我的问题仍然是属性需要一些存储位置,那么属性声明如何
允许在界面内.
编辑:这就是我的理解.由于我是C#的新手,我正在寻求你的帮助.
Jar*_*Par 13
你在一个有点错误的假设上操作,属性需要一个支持字段.是的,大多数属性使用支持字段,但这当然不是必需的.我可以实现你的接口没有支持字段,如下所示
class C1 : IFoo {
public string SayHello {
get { return "Say Hello"; }
set { }
}
}
Run Code Online (Sandbox Code Playgroud)
接口中的属性声明表明任何实现类必须具有此类方法(get_SayHello并且set_SayHello定义为属性),但不指定它们的实现方式.也就是说,界面说明你可以做什么,但现在它是如何完成的(所以你可以得到SayHello"字符串",你可以设置SayHello"字符串").因此,具体来说:在接口中定义属性不会说明支持字段.
此外,属性必须具有支持字段是一种误解.以下不是:
class Example {
public string SayHello {
get {
return "Hello, World!";
}
set { }
}
}
Run Code Online (Sandbox Code Playgroud)
属性只是可通过类字段语法访问的方法.因为它们是方法而不是字段,所以它们是可定义的接口.
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |