【C#学习日记】变量
1 两个Tips
1)不同精度的基本类型进行运算时,要根据需求进行显式的类型转换或者合理定义运算结果类型
例如:
double c = a + b; //a是int32型,b是double型,结果为double型才不会有数据丢失
2)方法的局部变量必须显式初始化
例如:
public static void PrintNum()
{
int d;
Console.WriteLine(d);//方法内的局部变量d没有显式样初始化
}
2 readonly和const
静态常量const在编译时就进行解析,动态常量readonly在运行时才进行解析。
- | 静态常量const | 动态常量readonly |
---|---|---|
声明 | 类中或方法中 | 只能声明在类中 |
定义 | 声明的同时必须设置常量值 | 声明的时候可以不设置。可以在类的构造函数中设置 |
类型限制 | 只能修饰基本类型,枚举类型,字符串 | 没有限制。可用来修饰任何类型的常量 |
对于类对象而言 | 对于所有类的对象而言,值都是一样的 | 对于类的不同对象而言,常量的值可以不一样 (因为构造函数可以有多个) |
内存消耗 | 无 | 要消耗内存来保存常量实体 |
总结 | 性能表现略高,无内存开销 但是限制多,不灵活 | 灵活,但是性能略低,有内存开销 |
注意:
1)readonly修饰的引用类型本身不可被修改,但是其成员可以被修改
例如:
public static readonly Class1 my = new Class1();
my.SomeProperty = 10;//正确,成员可被修改
my = new Class1();//不正确,本身不可被修改
2)在构造方法中,可以多次对动态常量进行赋值