好吧,空条件运算符返回一个null
或一些class
;因为int
是struct
你不能放的
// Doesn't compile. What is Length when variable == null?
int Length = variable?.ToString()?.Trim()?.Length;
但要么使用Nullable<int>
// Now Length can be null if variable is null
int? Length = variable?.ToString()?.Trim()?.Length;
或null
变成合理的int
:
// in case variable is null let Length be -1
int Length = variable?.ToString()?.Trim()?.Length ?? -1;
由于null.ToString()
throws 异常 then ?.
invariable?.ToString()
是强制性的;如果我们假设并且永远不会返回,那么所有其他?.
都是可选的。ToString()
Trim()
null
- if
variable
is null
then?.
将立即返回null
- 如果
variable
不是null
,则两者.ToString()
都.Trim()
不会返回null
,并且检查?.
是多余的。
所以你可以把
int? Length = variable?.ToString().Trim().Length;
或者
int Length = variable?.ToString().Trim().Length ?? -1;