访问修饰符:
Internal:仅限于该程序集内(同一个.exe中,即使存在于)
访问修饰符:
Public:不受限制;
Private:只允许本类内部 访问;
Internal:只允许本程序集访问;
Protected:允许本类和该类的子类访问;
Protected internal:允许本类和该类的子类 访问以及本程序集访问;
顶级类型的访问只能是public或internal。
属于 | 默认的成员可访问性 | 允许声明的可访问性 |
enum | Public | 无 |
Class | Internal | Public,internal |
Interface | Public | 无 |
Struct | Private | Public,internal,private
|
自定义类型,及自定义成员,枚举中的成员默认为public,类和类中的成员才有访问修饰符;
构造函数有:实例,私有,静态;
静态构造函数:调用发生在所有构造函数之前,属于类,存放于类中,当实例多个该类实例的时候 ,一个实例会调用一个实例构造函数,而静态构造函数只实例化一次;当本类中有静态字段,并且该类有初值的时候,该类会自动生成一个静态函数,并将字段放入静态函数中;
析构函数:自动执行,无需人为调用;作用:释放资源;一个类只能有一个,没有任何访问修饰符,也没有参数;
例如:
class B
{
static int i;
static B()
{
i = 20;
Console.WriteLine("静2态¬?构1造¨¬");
}
public B()
{
Console.WriteLine("实º¦Ì例¤y构1造¨¬");
}
}
static void Main(string[] args)
{
B a = new B();
B a1 = new B();
B a2 = new B();
B a3 = new B();
B a4 = new B();
}
运行结果:
单类:
class A
{
static A a;
int i;
private A()
{
i=10;
}
public static A Creata()
{
if (a == null)
{
a=new A();
return a;
}
else
{
return a ;
}
}
static void Main(string[] args)
{
A s = A.Creata();
A s1 = A.Creata();
}
字段:类或结构中的对象或值,可以封装字段;通常定义为private;
可以将字段声明为readonly;只读字段只能在初始化时候,或构造函数中赋值;如果只读字段前声明为static;则在静态构造函数中赋值;
属性:实现对字段的控制;根据对get和set的设置,可以将该属性的字段设置为只读或只写,还可以 对set设置条件,使用户只能书入满足条件的值;
例:
static void Main(string[] args)
{
People p = new People();
p.Weight = 500;
Console.WriteLine(p.Weight );
class People
{
private double weight=45;
public double Weight
{
get
{
return weight;
}
set
{
if (value > 0 && value < 400)
{
weight = value;
}
}
}
}
转载于:https://blog.51cto.com/3298646/618422