设置接口属性的默认值?

问题描述 投票:0回答:4

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

c# oop class interface class-design
4个回答
12
投票

您无法为接口的属性设置默认值。

除了接口之外,还使用抽象类(仅设置默认值,不实现其他任何内容):

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

10
投票

1
投票

接口不包含实现。他们所做的只是州议员签名。

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

例如抽象类可以为其任何属性返回默认值。


0
投票

这仅适用于 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; }
}
© www.soinside.com 2019 - 2024. All rights reserved.