c# - "private"修饰符有什么作用?

标签 c# .net private access-modifiers private-members

考虑到“private”是类成员的默认访问修饰符,为什么还需要关键字?

最佳答案

这里有一定数量的错误信息:

"The default access modifier is not private but internal"

嗯,这取决于你在说什么。对于类型的成员,它是私有(private)的。对于顶级类型本身,它是内部的。

"Private is only the default for methods on a type"

不,它是一个类型的所有成员的默认值 - 属性、事件、字段、运算符、构造函数、方法、嵌套类型以及我忘记的任何其他内容。

"Actually, if the class or struct is not declared with an access modifier it defaults to internal"

仅适用于顶级类型。对于嵌套类型,它是私有(private)的。

除了只限制一部分而不限制另一部分的属性访问之外,默认值基本上总是“尽可能地限制”。

就我个人而言,我在是否要明确的问题上犹豫不决。使用默认值的“优点”是它会突出显示您正在使某些内容比最严格的级别更可见的任何地方。明确指定它的“优点”是对于那些不知道上述规则的人来说更明显,并且它表明你已经考虑过了。

Eric Lippert 采用显式形式,我也开始倾向于这种方式。

参见 http://csharpindepth.com/viewnote.aspx?noteid=54了解更多。

关于c# - "private"修饰符有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/137454/

相关文章:

c# - 验证 MVVM 中的空字段

c# - ASP.NET MVC 4.5 OnBlur 事件文本框

C# 全屏截图

c# - "Private"可见性修饰符——C#转VB时如何处理差异?

objective-c - 在 Objective-C 中创建私有(private)属性

c# - C#编译器将静态类解释为 namespace

c# - 从 Visual Basic 6 调用 .Net 类

private - 通过使用私有(private)方法正确地降低了圈复杂度?

c# - 使用 SQLiteDataReader 的异常

c# - 如何将数据集转换为强类型对象?