namespace 静态类
{
//静态类就是用static 修饰的类
//静态方法就是用static修饰的方法
//静态类是无法被继承的
//实例类中可以包含静态成员和实例成员
static class StaticClass
{
//静态类中不能出现实例字段
//private string name;
//静态类中能包含静态的字段
private static string name;
//静态类中不能出现实例方法
//public int Add(int num1,int num2)
//{
// return num1 + num2;
//}
public static int number;
public static string Name
{
get
{
return name;
}
set
{
name = value;
}
}
//静态类中不能有实例构造方法
//public StaticClass()
//{
//}
//静态类中不能出现访问修饰符
//静态类虽然不能被实例化 但是静态构造方法也能被调用
//静态构造函数无访问修饰符、无参数,只有一个 static 标志。
//静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且在某次运行期间只执行一次。
//静态构造函数最多只运行一次。
//静态构造函数不可以被继承。 所有的构造函数都不可以被继承
static StaticClass()
{
Console.WriteLine("***");
}
//静态类中只能包含静态的方法
public static int Add(int num1,int num2)
{
return num1 + num2;
}
public static void NumberCreate()
{
number++;
}
}
}
class StaticClass01
{
//属于实例 调用的时候人为调用
public StaticClass01()
{
Console.WriteLine("实例构造方法");
}
//属于类 因为调用时候是被系统调用
static StaticClass01()
{
Console.WriteLine("静态构造方法");
}
public static void Test()
{
Console.WriteLine("++++++++++++++");
}
}
class Program
{
//如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。
//如果类中的静态字段带有初始化,则静态字段的初始化语句将在静态构造函数之前运行。
//一个类只能有一个静态构造函数。
static int num = 200;
static Program()
{
num = 12000;
}
static void Main(string[] args)
{
//静态类不能作为一种自定义的类型
//静态类不能被实例化
//StaticClass.Add(1,1);
//Console.WriteLine(num);
//Test01();
//Test02();
//通过类名.方法名调用静态方法的时候会默认的调用一次静态构造方法
StaticClass01.Test();
//一个类中既含有静态构造方法 也含有实例构造方法 在创建实例的时候 会首先调用一次静态构造方法再调用一次实例构造方法
StaticClass01 sc = new StaticClass01();
}
static void Test01()
{
StaticClass.NumberCreate();
Console.WriteLine(StaticClass.number);
}
static void Test02()
{
StaticClass.NumberCreate();
Console.WriteLine(StaticClass.number);
}
}