c#入门-静态构造器,静态类

静态成员的初始值赋值

实例成员在赋值时可以使用静态成员作为初始值。
无论是构建包含静态字段属性的表达式,还是调用静态方法获取返回值。
因为静态成员先于实例成员存在,在构建实例成员时,静态成员必然已经构造完成。

class 小兵
{
	public int 攻击 = 默认攻击;
	public int 防御 = 默认防御;
	public int 生命 = 默认生命;

	public static int 默认攻击;
	public static int 默认防御;
	public static int 默认生命; 
}

实例字段在赋值初始值时,不能使用其他的实例成员。
但静态字段可以使用其他的静态成员构建初始值。
只不过静态字段有先后顺序之分。

静态字段的初始值赋值会从上到下依次进行。
如果使用了还没有赋值初始值的字段,那么此时这个对这个字段取值就是默认值。

Console.WriteLine(Foo.a);
Console.WriteLine(Foo.b);
Console.WriteLine(Foo.c);

Console.WriteLine(Boo.a);
Console.WriteLine(Boo.b);
Console.WriteLine(Boo.c);

class Foo
{
	public static int a = b;
	public static int b = ++c;
	public static int c = 10;
}
class Boo
{
	public static int a = 10;
	public static int b = ++a;
	public static int c = b;
}

静态构造器

静态成员同样可以有只读字段,和使用init访问器的属性。
他们可以通过静态构造器赋初始值。

静态构造器声明语法是在一个无参实例构造器前加static修饰。
静态构造器在你第一次访问这个类时调用。
和终结器一样,因为不由人为控制,所以无法添加参数和访问修饰符。

Console.WriteLine(Boo.i);
Foo.Nope();
Console.WriteLine(Boo.i);

class Boo
{
	public static int i = 0;
}
class Foo
{
	static Foo()
	{
		Boo.i = 20;
	}
	public static void Nope() { }
}

静态类

如果一个类只有静态成员,那么可以将类修饰为静态类。
静态类将不允许声明实例构造器,包括编译器自动添加的默认构造器。

无法声明静态类的变量。通常,静态类都是作为工具类使用。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值