C# 可选参数方法调用:
可选参数方法:
调用方式可以:
这样我们要是用age和grade的默认值这样我们就可以跳过不必要的 我们就可以指定year的值。
可选参数必须在所有必须参数之后
params可变参数一定要在最后一个
静态构造函数 没有修饰符,无参
一个类型只能有一个静态函数
C#的新特征是可以给类写一个无参静态的构造函数,这种构造函数只执行一次。
构造函数是每个实例执行一次。
编写静态构造函数的原因是,有一些静态的字段或属性在第一次使用类之前从外部初始化静态字段和属性、
无参构造函数和静态构造函数可以存在同一个类中。
如果是只读成员,他就是一个不可变类型,其内容只能在初始化时设置,这对于多线程非常有用,多线程可以访问用于不会改变的同一对象。因为内容不需要改变,所以不用同步。
不可变类型的一个例子就是string类。这个类没有定义任何允许改变其内容的成员。诸如Toupper(把字符串更改为大写)的方法是返回一个新的字符串。但传递到构造函数的原始字符串保持不变。
1:匿名函数只是一个继承自Object且没有名称的类,该类从初始化器中推断,类似于隐式类型化的变量。
常量的类型可以是内置数值类型、bool,char,enum,string.
1:结构(struct)不支持继承
2:较小的数据类型使用结构可以提高性能。
3:类和结构都是使用new来声明实例。
构造函数和字段初始化速度
对象被实例化时,初始化动作按照如下顺序:
从子类到父类:
.字段被初始化
.父类构造函数的参数值被算出
从父类到子类:
构造函数整体被执行
执行顺序如下图:
子类的字段初始化->子类中的父类Base构造函数被调用->父类的字段初始化->父类构造函数调用->子类构造函数调用