C# 的冷知识:@,?,??,?: 的用法
直接贴上一段代码,先看下面的代码
public struct Vector{
int x;
int y;
public Vector(int x, int y){
this.x = x;
this.y = y;
}
}
public class MyClass {
static int Func1(string @string, Vector? vector = null){
string @return = "xxx";
Vector? v1 = new Vector(0, 0);
Vector? v2 = null;
vector = v1 ?? v2;
vector = @return == "" ? v1 : v2;
return 0;
}
}
1. @
用法
@
除了转义字符串之外,还有另一个用处,就是修饰参数字段,被@修饰的参数字段,如果是语法中关键字,它将失去它的意义,例如Func1中的@string和@return,当然,原有的关键字依然可以使用。
2. ?
用法
?
跟在类型后面,作用是:让一个不能为null
的类型变量可以为null
例如Vector
结构体不能为null
,加上?
后就可以复制null
了。
3. ??
用法
??
是判断连个表达式或者两个变量,意义为:??
左边不为null
返回左边的值,否则发返回右边的值。注意,如果多个连续运算,如v1 ?? v2 ?? v3
,是从右往左运算的,及v1 ?? (v2 ?? v3)
4. ?:
用法
?:
就是三元原运算符,意义为:判断?
左边表达式为ture
还是false
,真则返回:
左边的值,假则返回:
右边的值。