查看类型的内部结构: typeof
获取类型的默认值: default
var temp01 = typeof(decimal);//查看类型的内部结构
var temp02 = default(decimal);//获取类型的默认值
检查数据是否有溢出: checked
不检查数据是否有溢出: unchecked(默认不检查)
int i = int.MaxValue;
var result02 = unchecked(i + 1);
var result01 = checked(i + 1);
is运算符可以检查对象是否与特定的类型兼容
is关键字是用于检查对象是否与给定类型兼容,如果兼容就返回true,如果不兼容就返回false。
//is 的使用
bool b = 对象名 is 类型名 ;
as运算符用于执行引用类型的显式类型转换
as关键字会直接进行类型转换,如果转换成功会返回转换后的对象,如果转换不成功则不会抛出异常而是返回null
//as 的使用
类型名 b = 对象名 as 类型名 ;
if( b !=null)
{
Console.WriteLine("转换成功");
}
逻辑运算符:& 逻辑与(安位与); | 逻辑或(按位或); ^ 逻辑异或(按位异或); ~ 按位求反 ;
获取基本数据类型对象所占内存大小: sizeof
??= 运算符的左操作数必须是变量、属性或索引器元素。
?? 和 ??= 运算符的左操作数的类型必须是可以为 null 的值类型。 特别是,可以使用具有无约束类型参数的 null 合并运算符:
public string Name
{
get => name;
set => name = value ?? throw new ArgumentNullException(nameof(value), "Name cannot be null");
}
int? a = null;
int? b = null;
int? c = 200;
int? d = null;
int? e = null;
int? f = 100;
var aa = a ?? b ?? c;//结果=200
var bb = d ??= e ??= f;//结果=100
//以上表达式会像这样求值
var cc = a ?? (b ?? c);//结果=200
var dd = d ??= (e ??= f);//结果=100