我有一个接口,其中包含一个属性。我需要设置该属性的默认值。如何做到这一点?还有,在接口中为属性设置默认值是一种好的实践吗?还是在这里使用抽象类更合适?
我有一个接口,其中包含一个属性。我需要设置该属性的默认值。如何做到这一点?还有,在接口中为属性设置默认值是一种好的实践吗?还是在这里使用抽象类更合适?
你无法为接口的属性设置默认值。
可以在接口之外使用抽象类(它只设置默认值,不实现其他内容):
public interface IA {
int Prop { get; }
void F();
}
public abstract class ABase : IA {
public virtual int Prop
{
get { return 0; }
}
public abstract void F();
}
public class A : ABase
{
public override void F() { }
}
接口不包含任何实现,它们只声明成员签名。
接口的实现可以针对任何属性自由设置默认值。
例如,抽象类可以为其任何属性返回默认值。