为什么界面成员不能非公开?

时间:2012-09-24 10:42:51

标签: c# interface access-specifier

  

可能重复:
  Non Public Members for C# Interfaces

假设我有

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

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

我明白了:

  

没有实现接口成员;无法实现接口   会员,因为它不公开;

我知道修复的是什么,但我想知道为什么C#不让接口成员成为私有。

很多次我希望我的课程遵循一种模式,但不需要将成员公开,比如当我写一个图书馆时。最重要的是,界面本身并不公开:X

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

更新:除了原始帖子之外,另一个帖子中的this code sample from the answer比大多数描述答案更能说明问题。甚至更好,来自@JonSkeet this

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

接口的意义在于它们提供了一个其他对象可以用来与对象通信的契约。没有必要让成员保密,因为它不再有用了

相关问题