设置接口属性的默认值

本文关键字:默认值 属性 接口 设置 | 更新日期: 2023-09-27 18:10:56

我有一个包含一个属性的接口。我需要为这个属性设置默认值。怎么做呢?此外,在接口中为属性设置默认值是否是一种好做法?或者在这里使用抽象类代替是一个合适的?

设置接口属性的默认值

不能为接口的属性设置默认值。

在接口之外使用抽象类(它只设置默认值,不实现其他任何东西):

    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() { }
    }

在c# 8中,接口可以有一个默认实现。https://devblogs.microsoft.com/dotnet/default-implementations-in-interfaces/

接口不包含实现。他们所做的只是状态成员签名。

接口的实现可以自由地为任何属性设置任何默认值。

。抽象类可以为它的任何属性返回默认值。