private 只能在本类中使用
protected 只能在本类与子类中使用
internal 只能在同一命名空间(程序集)中使用
例子:
该示例包含两个文件:Assembly1.cs 和 Assembly2.cs。第一个文件包含内部基类 BaseClass。在第二个文件中,实例化 BaseClass 的尝试将产生错误。
// Assembly1.cs // compile with: /target:library internal class BaseClass { public static int intM = 0; }
// Assembly1_a.cs // compile with: /reference:Assembly1.dll class TestAccess { static void Main() { BaseClass myBase = new BaseClass(); // CS0122 } }
在此示例中,使用与示例 1 中所用的文件相同的文件,并将 BaseClass 的可访问性级别更改为 public。还将成员 IntM 的可访问性级别更改为internal。在此例中,您可以实例化类,但不能访问内部成员。
// Assembly2.cs // compile with: /target:library public class BaseClass { internal static int intM = 0; }
// Assembly2_a.cs // compile with: /reference:Assembly1.dll public class TestAccess { static void Main() { BaseClass myBase = new BaseClass(); // Ok. BaseClass.intM = 444; // CS0117 } }
public 所有类均可使用