c#中的各种问号和点的用法
2024年1月15日 - 由Bo 0 评论 449 阅读
最近在看c#,因为打算试一下blazor和MAUI的混合开发,自己记录一下各种问号和点的用法,最近总觉得要混淆。
1. ?
声明的变量可以为空,可用于int或datetime类型等。比如 int? length = null;
比如 int? length = area?.length; (如果area为null则length为null,如果area不为null则length为area的length)
2. ?.和?[]
一个问号后面带一个点或者带一个方括号。
对应的是如果前面的表达是null,则返回null,否则返回后面的方法或元素。
比如 a?.x a?[x],如果a是null,则都返回null。如果a不是null,则返回a.x和a[x]。
3. ??
null合并运算。
比如 b = a ?? "s" (如果a为null,b的值就是后面的字符s,如果a不为null,b的值就是a的值)
4. ??=
null合并赋值。
比如numbers ??= new List<int>(); numbers为null时才会把右边赋值给它。
5. ?:
这个是三目运算符。如果表达式为正向,则返回前一个,否则返回后一个。
condition ? consequent : alternative , is this condition true ? yes : no
另外a ? b : c ? d : e等同于a ? b : (c ? d : e)