Ler*_*ins 40 .net c# encapsulation
好的,这让我烦恼..我知道我已经在某个地方读过它,谷歌没有帮助.
未指定访问修饰符的方法的可访问性级别是什么?
void Foo()
{
    //code
} 
我想说,internal但我不是百分百肯定.
Ste*_*idi 43
类型的默认可访问性是internal,但该类型成员的默认可访问性取决于类型.
一般来说,一个成员类是private在默认情况下,当一个成员结构是public默认.这取决于语言; C++的默认结构访问修饰符是公共的,对于C#,它们是私有的.
Min*_*nyu 18
假设这是一个C#方法,因为你有".net"标签.
人们需要区分"成员"可访问性和"类"可访问性.
来自Anders Hejlsberg 等人的C#编程语言,第三版,第434页第10.3.5节("类成员 - 访问修饰符"):
一类成员声明可以有五种可能的种声明可访问性中的任何一个(第3.5.1节): ,
public,protected internal,protected,internal或private.除protected internal组合外,指定多个访问修饰符是编译时错误. 当class-member-declaration不包含任何访问修饰符时,private假设.[强调我的]
然后在第539页的第11.2节("结构成员")中:
除了第11.3节中提到的差异之外,第10.3节到第10.14节中提供的类成员的描述也适用于结构成员.
第11.3节没有提到有关访问修饰符的任何内容,因此我对此的阅读意味着struct没有访问修饰符的成员也是private默认的.这符合MSDN所说的和我自己的经验.
哦等等,还有一件事......
interface方法声明当然是public根据定义的。所以下面的实现是public没有显式访问修饰符的。
public class MyClass : IEqualityComparer<MyClass>
    bool IEqualityComparer<MyClass>.Equals(MyClass x , MyClass y) {}
}