【发布时间】:2011-04-15 09:13:49
【问题描述】:
我正在尝试查找 C# 各个方面的默认可见性的参考。类类型、字段、方法、枚举等
有人可以提供这些列表及其默认可见性(即没有前缀修饰符)吗?
【问题讨论】:
-
我不会认为它是重复的......这个问题很具体(什么是默认值?),这个问题很广泛(什么是默认值?)
标签: c#
我正在尝试查找 C# 各个方面的默认可见性的参考。类类型、字段、方法、枚举等
有人可以提供这些列表及其默认可见性(即没有前缀修饰符)吗?
【问题讨论】:
标签: c#
默认情况下,类的访问修饰符是internal。这意味着可以在同一个程序集中访问一个类。但是,如果我们希望从其他程序集访问该类,则必须将其公开。
【讨论】:
[assembly:InternalsVisibleTo("Friend1b")]
来自 MSDN:
顶级类型,没有嵌套在其他类型中,只能具有internal 或public 可访问性。这些类型的默认可访问性是internal。
来源:Accessibility Levels (C# Reference)(2017 年 12 月 6 日th)
【讨论】:
您正在寻找的所有信息都可以在here 和here 中找到(感谢Reed Copsey):
来自第一个链接:
类和结构 直接在命名空间中声明(换句话说,不嵌套在其他类或结构中)可以是公共的或内部的。 如果未指定访问修饰符,则默认为内部。
...
类成员和结构成员(包括嵌套类和结构)的访问级别默认为私有。
...
接口默认为内部访问。
...
委托的行为类似于类和结构。默认情况下,它们直接在命名空间中声明时具有内部访问权限,而嵌套时具有私有访问权限。
来自第二个链接:
顶级类型,不嵌套在其他类型中,只能具有内部或公共可访问性。 这些类型的默认可访问性是内部的。
对于嵌套类型:
默认成员可访问性的成员 ---------- ---------------- 枚举公共 私人课 公共接口 结构私有【讨论】:
Public。 Enum 成员也是 Public。在您的情况下仅使用显式范围可能不会令人困惑,因为它很可能会在某些时候被 c# 开发人员翻译或阅读。不幸的是,vb.net 中的代码生成不会为您执行此操作。
默认为private。除非它们是嵌套的,否则类是 internal。
【讨论】:
enum members are private by default, so to use them outside the enum we should declare them as public。你能解释一下为什么这本书与你所说的相矛盾吗?谢谢。