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;
}
}
}