Class的访问权限(public ,private,protected,internal)

概念:

1.值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。

2.引用类型:表示指向存储在内存堆中的数据的指针或引用(包括类、接口、数组和字符串)。

 

new运算符:

        (1)用于创建对象和调用构造函数。 例如:                 

           Class1 obj  = new Class1();
     (2)还可用于创建匿名类型的实例: 
        var query = from cust in customers
                    select new {Name = cust.Name, Address = cust.PrimaryAddress};
     (3)new 运算符还用于调用值类型的默认构造函数。 例如:
                 int i = new int();
          在上一个语句中,i 初始化为 0,它是 int 类型的默认值。 该语句的效果等同于:
          int i = 0;




Class的访问权限:

                        Internal      Protected  Internal       Protected       Private         Public 

属性或方法

同一个类中:         Y                      Y                            Y                     Y                Y 

子类:                 Y                      Y                            Y                     N               Y 

引用   :             N                      -无                          --无                 --无                Y 

同一命名空间        Y                      Y                            N                    N                Y 

子类不能比父类的存取范围低:如 

internal   class Class1      {}

public class Test : Class1   {}

这样会报错:錯誤   1     不一致的存取範圍: 基底類別 'InterNalClass.Class1' 比類別 'InterNalClass.Test' 存取範圍低    

顶级类中只能是Public或者是Internal 修饰,如:

 Namespace  test

{

       Public class ll  {}                //顶级类

}

同一个类中,Function调用嵌套类的:   Class  ll =new Class();,

Namespace  test

{

       Public class ll                  //顶级类

      {

         public class C_Public

        {

            public static int publicInt=0;

            internal static int internalInt=0;

            private static int privateInt = 0;

            protected internal int protectedInternal = 0;

        }

       Public  void function()

      {

            C_Public ll = new C_Public();          //new  与直接调用有什么区别啊???

            ll.protectedInternal = 1;                //只有一个

 

            C_Public.publicInt = 2;                   //有两个属性 

            C_Public.internalInt = 3; 

       }

       }

}

原文地址:https://www.cnblogs.com/alexzp/p/2291910.html