C# 接口中的公共变量?

C# 接口中的公共变量?,c#,interface,abstract-class,C#,Interface,Abstract Class,我正在阅读,并注意到问题的第二点: 另一位面试官问我,如果你有一个公共变量怎么办 在界面内部,这与抽象的有什么不同 上课?我坚持你不能在 接口。我不知道他想听什么,但他不知道 我也很满意 我阅读了答案,其中似乎没有一个能澄清这一点,除了: 对于.Net 你对第二个面试官的回答也是对第一个面试官的回答 一。。。抽象类可以有实现接口和状态接口 不能 我认为面试官的回答是正确的,因为界面中没有任何变量。 我在这里有点困惑。有人能澄清一下吗? 我的问题是,为什么面试官会问这样一个奇怪的(?)问题?所有界

我正在阅读,并注意到问题的第二点:

另一位面试官问我,如果你有一个公共变量怎么办 在界面内部,这与抽象的有什么不同 上课?我坚持你不能在 接口。我不知道他想听什么,但他不知道 我也很满意

我阅读了答案,其中似乎没有一个能澄清这一点,除了:

对于.Net

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

我认为面试官的回答是正确的,因为界面中没有任何变量。 我在这里有点困惑。有人能澄清一下吗?
我的问题是,为什么面试官会问这样一个奇怪的(?)问题?

所有界面成员都是隐式公开的,这就是为什么界面中不能有属性或方法的
public

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

关于你的问题:

我认为面试官的回答是正确的,因为你不可能做到 接口中的任何变量

不可以。您可以在界面中定义属性。比如:

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

public class TestClass : ITest
{
    public int MyProperty
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }
}
编辑:

另一位面试官问我,如果你有一个公共变量怎么办 在界面内部,这与抽象的有什么不同 上课


可能面试官是想看看你是否会说界面中的所有成员默认都是公共的,而在抽象类中你可以有私有的、受保护的、公共的成员等等。

再加上Habib的回答,界面中的所有东西都是公共的,因为私有的东西真的没有任何意义,因为其中没有任何实现,所以不会使用私有成员,因为没有任何东西可以使用它


我想这是一个你需要详细说明的问题,我想这根本不是一个坏问题。

谢谢,但我的问题是,面试官为什么问这样的问题?这是一个奇怪的问题吗?@Sharun,我不这么认为,抽象类和接口之间的区别是一个常见的问题,也是一个接口的默认访问说明符是什么。我问的是这部分问题:
另一位面试官问我,如果接口中有一个公共变量,这和抽象类有什么不同?
Ya,我知道接口可以包含属性。可能正如有人对原始问题的回答所评论的那样,属性是“他在界面内说
公共变量
的奇怪方式”@Sharun,可能采访者是想看看你是否会说默认情况下界面中的所有成员都是公共的,而在抽象类中你可以有私有的、受保护的、,公众成员等等。但是的,这是一个奇怪的问题,但面试官会做各种各样的事情