use*_*291 15 c# getter interface
我在这里阅读http://msdn.microsoft.com/en-us/library/75e8y5dd%28v=VS.100%29.aspx
可以将get放入接口类但不设置?
因此,如果我想在接口中使用getter和setter,我必须创建旧语法getVar setVar,因为新语法不适合接口类语法?
更新:如果我必须在Interface类中省略set,这是否意味着我不能强制类使setter在这种情况下违背了具有Interface类的目的,因为我只能部分执行?
And*_*odi 36
不,我觉得你误解了.那篇文章是关于具有readonly属性的接口的可能性(只有getter的属性).但是,如果需要,您也可以将setter放在界面中:
interface IHasProperty
{
string Property{ get;set; }
}
class HasProperty:IHasProperty
{
public string Property{ get;set; }
}
Run Code Online (Sandbox Code Playgroud)
Mer*_*ham 12
您可以使用属性语法.使用此组合:
interface ISomething
{
string Test { get; }
}
class Something : ISomething
{
public string Test { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
如果您选择,您当然可以在Something.Test中为getter添加完整的实现.为简洁起见,我只使用了支持字段.
请记住,接口定义了必须实现的最小限度的事物.您可以根据需要添加任何肉汁(新方法,访问者,成员等).你甚至可以添加一个公共setter:
interface ISomething
{
string Test { get; }
}
class Something : ISomething
{
public string Test { get; set; } // Note that set is public
}
Run Code Online (Sandbox Code Playgroud)
唯一的限制是有人不能使用你添加的肉汁,除非他们有具体类型(类,而不是接口)的引用,或者定义你添加的方法的不同接口.
是的,只是省略set;了财产声明.例如:
interface IName
{
string Name { get; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25639 次 |
| 最近记录: |