接口中的公共变量?

Sha*_*run 3 c# abstract-class interface

我正在读这篇文章,并注意到问题的第二点:

另一位采访者问我,如果你在界面中有一个Public变量,那么它与Abstract Class有什么不同?我坚持认为你不能在界面中有一个公共变量.我不知道他想听到什么,但他也不满意.

我读了答案,但除了这个以外,似乎没有人澄清这一点:

对于.Net,

你对第二个面试官的回答也是对第一个面试者的答案......抽象类可以有实现,AND状态,接口不能......

我认为面试官的答案是正确的,因为你不能在界面内有任何变量.我在这里有点困惑.任何人都可以澄清一下吗?我的问题是,为什么面试官会问这么奇怪的(?)问题?

Hab*_*bib 7

所有接口成员都是隐式公共的,这就是为什么你不能public在接口中使用属性或方法.

接口C# - MSDN

接口成员自动公开,并且不能包含任何访问修饰符.成员也不能是静态的.

对于你的问题:

我认为面试官的答案是正确的,因为你不能在界面内有任何变量.

不可以.您可以在界面中定义属性.就像是:

interface ITest
{
    int MyProperty { get; set; }
}

public class TestClass : ITest
{
    public int MyProperty
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

另一位采访者问我,如果你在界面中有一个Public变量,那么它与Abstract Class有什么不同?

可能面试官试图看看你是否会说默认情况下界面中的所有成员都是公开的,而在Abstract类中你可以拥有私人,受保护的公共成员等.