4

可能重复:
C# 接口的非公共成员

假设我有

internal interface IInterface
{
    int MyProperty { get; set; }
}

public class MyClass : IInterface
{
    internal int MyProperty
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }
}

我明白了:

不实现接口成员;无法实现接口成员,因为它不是公共的;

我知道解决方法是什么,但我想知道为什么 C# 不让接口成员私有。

很多时候,我希望我的课程遵循一种模式,但不必将成员公开,比如在我编写库时。最重要的是,接口本身不是公开的:X

注意:我不是在问如何实现私有接口成员,但我知道这个决定背后的设计逻辑。我找不到合适的副本。

更新:比原始线程更多,这个来自另一个线程答案的代码示例比大多数描述答案更好地解释了它。甚至更好,来自@JonSkeet

4

2 回答 2

1

接口用于定义合同,通过将字段/方法设为私有,那么使用接口实际上没有意义。客户如何知道如何使用合同?除非你真的需要一个抽象类。

于 2012-09-24T10:45:38.763 回答
1

接口的意义在于它们提供了一个契约,其他对象可以使用它来与您的对象进行通信。将成员设为私有没有意义,因为它不再有用

于 2012-09-24T10:46:27.827 回答