/*用static修饰的类为静态类
*静态类的特点:
1.静态类不能被直接实例化
2.静态类不能被继承
3.静态类中不能包含实例成员
4.静态类就是特殊的密封类
5.静态类中虽然不能包含实例成员,但是可以包含常量
6.静态类和实例调用方式不一样,普通类是以实例.的方式进行调用,二静态类是以类名.的方式调用
7.静态类的访问速度,相对而言比实例类要快的多
8.如果类中包含静态构造函数和函数的入口Main()函数,此时静态构造函数会在调用Main之前调用
9.如果类中包含静态构造函数但不包括函数的入口Main函数,此时静态构造函数会在调用Main之后调用
静态构造函数:
* 1.一定是静态类才有静态构造函数吗? 错误
*
* 静态函数的特点:
* 1静态函数没有修饰符修饰(默认修饰符为private,但是你不能写出来)
* 2.静态构造函数是系统默认调用的,程序员无法手动调用
* 3.如果类中没有静态构造函数,而此时类中包含静态字段(未初始化的)那么此时编译器会默认生成静态构造函数
* 4.在静态类中或方法中,不能使用对象
* 5.如果类中包含静态成员,且没有被初始化,系统会默认提供一个默认的值,这也间接说明了我们不可以直接调用静态构造函数,这也没办法控制静态函数的执行时间
* 6.静态构造函数只能被调用一次,并且不能有重复
* 7.静态构造函数不能有参数
* 8.虽然静态构造函数和普通构造函数名字一样,但是系统规定他俩可以共存,尽管参数列表一样
* 9.静态构造函数是在普通构造函数调用之前执行,一般情况下用于初始化静态字段或者拦截在实例化之前
class Person{public string name;
public static string sex;
构造函数public Person(){
Console.WriteLine ("构造函数");
}
// //静态构造函数static Person()
{
Console.WriteLine ("静态构造函数");}
class MainClass{
public static void Main (string[] args)
{
Console.WriteLine ("________");
new Person ();
}
}
}
class MainClass
{
public static void Main (string[] args)
{Console.WriteLine ("________");
new Person ();
}
}
static class Person
{
public const int a=10;
}
静态类
static class Arr
{
public static int d;
public static void A(int []arr)
{
int sum = 0;
for (int i = 0; i < arr.Length; i++) {
sum += arr [i];
}
d = sum;
Console.WriteLine ("和为:{0}",d);
}}
class MainClass
{
public static int Main (string[] args){
//定义一个静态类Arr,计算一个数组的求和
int[] arr1 = new int[]{1,5,6,8,4 };
Arr.A (arr1);
//练习2:在上面的条件下,将数组的求和输出到一个变量中(静态成员变量),打印该静态成员变量的值
return 0;
}
}
/* 设计模式二十一种
单例设计模式
核心:将我们的构造函数设为私有
工厂设计模式
MVC设计模式
*/
sealed class P {
private static P instance;
private P() {
}
public static P Singleinstance {
get {
if (instance == null)
{
instance = new P ();
}
return instance;
}
}
}
class MainClass {
public static int Main(string [] args)
{
P p=P.Singleinstance;
P p1=P.Singleinstance;
if (p == p1)
{ Console.WriteLine ("同一对象");
} return 0;
}
}