如果我有一个界面:
interface IFoo { int Offset {get;} }
我想要这个,可以吗:
interface IBar: IFoo { int Offset {set;} }
那么IBar的消费者将能够设定或获得?
这很接近,但没有香蕉.
interface IFoo { int Offset { get; } } interface IBar : IFoo { new int Offset { set; } } class Thing : IBar { public int Offset { get; set; } }
注意new
IBar中的关键字,但这会覆盖IFoo的get访问器,因此IBar没有get.因此,没有你不能实际创建IBar,只需添加一组,同时保持现有的get.
不,你不能!
(我正打算写"是",但在阅读了安东尼的帖子后,尝试了一些调整,我发现答案是否定的!)
class FooBar : IFoo, IBar { public int Offset{get;set;} }
(安东尼指出会产生警告,可以通过添加"新"关键字来修复.)
在尝试代码时:
IBar a = new FooBar(); a.Offset = 2; int b = a.Offset;
最后一行将生成编译错误,因为您隐藏了IBar的Offset setter.
编辑:修复了类中属性的accesibillity修饰符.谢谢安东尼!