Ler*_*ins 40 .net c# encapsulation
好的,这让我烦恼..我知道我已经在某个地方读过它,谷歌没有帮助.
未指定访问修饰符的方法的可访问性级别是什么?
void Foo()
{
//code
}
Run Code Online (Sandbox Code Playgroud)
我想说,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) {}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24041 次 |
最近记录: |