我有一个包含一个属性的接口。我需要设置该属性的默认值。怎么做?。在接口中为属性设置默认值也是一种好的做法吗?或者这里使用抽象类是一个合适的类?
您无法为接口的属性设置默认值。
除了接口之外,还使用抽象类(仅设置默认值,不实现其他任何内容):
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() { }
}
接口不包含实现。他们所做的只是州议员签名。
接口的实现可以自由地为任何属性设置任何默认值。
例如抽象类可以为其任何属性返回默认值。
这仅适用于 static 字段。因为,接口不能包含实例字段。静态字段不是实例字段。
public interface IMyDefault
{
private static string _name = "Yusif";
// Has default implementation
string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
// Hasn't default implementation
public string Surname { get; set; }
}
public class MyDefault : IMyDefault
{
// We only implement Surname in MyDefault.cs
public string Surname { get; set; }
}