您的位置:首页 > 编程语言 > C#

C#中的一些访问修饰符

2015-06-19 00:26 357 查看
原文链接:http://www.cnblogs.com/sening/p/4587421.html

public :访问不受限制。

1 class PointTest
2 {
3     public int x;
4     public int y;
5 }
6
7 class MainClass4
8 {
9     static void Main()
10     {
11         PointTest p = new PointTest();
12         // Direct access to public members:
13         p.x = 10;
14         p.y = 15;
15         Console.WriteLine("x = {0}, y = {1}", p.x, p.y);
16     }
17 }
18 // Output: x = 10, y = 15
View Code

protected :访问仅限于包含类或从包含类派生的类型。

1 //只有在通过派生类类型发生访问时,基类的受保护成员在派生类中才是可访问的。
2 class A
3 {
4     protected int x = 123;
5 }
6
7 class B : A
8 {
9     static void Main()
10     {
11         A a = new A();
12         B b = new B();
13
14         // Error CS1540, because x can only be accessed by
15         // classes derived from A.
16         // a.x = 10;
17
18         // OK, because this class derives from A.
19         b.x = 10;
20     }
21 }
View Code

Internal :访问仅限于当前程序集。

1 //示例包含两个文件:Assembly1.cs 和 Assembly1_a.cs。 第一个文件包含内部基类 BaseClass。 在第二个文件中,实例化 BaseClass 的尝试将产生错误。
2 // Assembly1.cs
3 // Compile with: /target:library
4 internal class BaseClass
5 {
6    public static int intM = 0;
7 }
8 -------------------------------------------------------------------
9 // Assembly1_a.cs
10 // Compile with: /reference:Assembly1.dll
11 class TestAccess
12 {
13    static void Main()
14    {
15       BaseClass myBase = new BaseClass();   // CS0122
16    }
17 }
View Code
1 使用与示例 1 中所用的文件相同的文件,并将 BaseClass 的可访问性级别更改为 public。 还将成员 IntM 的可访问性级别更改为 internal。 在此例中,可以实例化类,但不能访问内部成员。
2 // Assembly2.cs
3 // Compile with: /target:library
4 public class BaseClass
5 {
6    internal static int intM = 0;
7 }
8 ------------------------------------------------
9 // Assembly2_a.cs
10 // Compile with: /reference:Assembly1.dll
11 public class TestAccess
12 {
13    static void Main()
14    {
15       BaseClass myBase = new BaseClass();   // Ok.
16       BaseClass.intM = 444;    // CS0117
17    }
18 }
View Code

protected internal:访问限制到当前程序集或从包含派生的类型的类别。(从当前程序集或从包含类派生的类型,可以访问具有访问修饰符 protected internal 的类型或成员。)

private :访问仅限于包含类型,是一个成员访问修饰符。 私有访问是允许的最低访问级别。 私有成员只有在声明它们的类和结构体中才是可访问的。

1 //Employee 类包含两个私有数据成员 name 和 salary。 作为私有成员,它们只能通过成员方法来访问。 添加名为 GetName 和 Salary 的公共方法,以便可以对私有成员进行受控/   //的访   问。 通过公共方法访问 name 成员,而通过公共只读属性访问salary 成员。
2 class Employee2
3 {
4     private string name = "FirstName, LastName";
5     private double salary = 100.0;
6
7     public string GetName()
8     {
9         return name;
10     }
11
12     public double Salary
13     {
14         get { return salary; }
15     }
16 }
17
18 class PrivateTest
19 {
20     static void Main()
21     {
22         Employee2 e = new Employee2();
23
24         // The data members are inaccessible (private), so
25         // they can't be accessed like this:
26         //    string n = e.name;
27         //    double s = e.salary;
28
29         // 'name' is indirectly accessed via method:
30         string n = e.GetName();
31
32         // 'salary' is indirectly accessed via property
33         double s = e.Salary;
34     }
35 }
View Code

 

转载于:https://www.cnblogs.com/sening/p/4587421.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: