C#中的一些访问修饰符

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

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 }

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 }

 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 }

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 }

时间: 2024-10-11 12:23:01

C#中的一些访问修饰符的相关文章

java中四种访问修饰符

Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected default private 类 √ × √ ×(内部类可以用private修饰) 方法 √ √ √ √ 成员变量 √ √ √ √ 四种修饰符的访问权限 public:对所有类可见 protected:对同一包中的类可见.对同一包及不同包中的子类可见 default:对同一包中的类可见.对同一包中的

C#中的默认访问修饰符

1.命名空间下的元素的默认访问修饰符 public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员.internal : 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集不可以访问. 2.各类型中的成员的默认访问修饰符剩下的修饰符主要是正对继承这个语言特性的,拥有继承的类型有两个类(class)和接口(interface).public,internal同样可以用于类型成员.private : 同一类和结构的代码可以访问该类型和成员.protected :

C#中4个访问修饰符(随笔)

Public:公有的,是类型和类型成员的访问修饰符.对其访问没有限制. Internal:内部的,是类型和类型成员的访问修饰符.同一个程序集中的所有类都可以访问 Private:私有的,是一个成员访问修饰符.只有在声明它们的类和结构中才可以访问. Protected::受保护的,是一个成员访问修饰符.只能在它的类和它的派生类中访问.

JAVA 中的权限访问修饰符(public,protected,default,private )

JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什么也没写,默认为default.当然也可以显式得给出default权限 default修饰的属性和方法,包中的所有其他类对那个成员都有访问权限,但是对于这个包之外的所有类没有访问权限. 2.public: 接口访问权限 public修饰的属性和方法对每个类都是可见的 3.private:类内访问权限

java中四种访问修饰符区别及详解全过程

客户端程序员:即在其应用中使用数据类型的类消费者,他的目标是收集各种用来实现快速应用开发的类. 类创建者:即创建新数据类型的程序员,目标是构建类. 访问控制存在的原因:a.让客户端程序员无法触及他们不应该触及的部分  : b.允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员  java的四个关键字:public.protected.default.private(他们决定了紧跟其后被定义的东西可以被谁使用) 适用范围<访问权限范围越小,安全性越高>   访问权限   类  

Java中的protected访问修饰符

在某个类中定义的protected 方法和属性和默认权限方法和属性是一样的.比如,某类的protected 方法和属性在包外是不能通过该类实例进行访问的(你能在包外访问一个类的默认权限的方法和属性吗?当然不能),这就是为什么在某对象所在的包的以外的任何 地方,你不可以通过该类的对象引用来调用它的protected 方法和属性,哪怕是在该类的子类中也不可以这样做.在该类包外的子类中能“看到“的只是子类自己继承来的protected 方法和属性,它是不能“看到“它的父类对象的protected方法和

类定义中可以使用的访问修饰符

20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. internal: 只能在当前项目中访问,在同一个项目中,internal和public的权限是一样的. protected internal: protected + internal权限. 1.1:能够修饰类的访问修饰符只有两个: public / internal 1.2:接口中的成员不允许

Swift中的访问修饰符对于扩展(extension)的影响

在Swift中,有一种结构extension,类似于OC中的Category分类,非常适合于对代码进行管理 同时,常用的访问修饰符有public.internal.private,而对于这三个访问修饰符,对extension的影响是各不一样的 在本文中,我将对同一文件下和不同文件下的extension.在本类和其他类调用,共四种情况进行分别介绍. 在介绍前,我先创建了一个非常简单的iOS项目,并新建了一个Person类和Person类的extension文件,如下图: 其中,Person类的代码