好吧,空条件运算符返回一个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
variableis nullthen?.将立即返回null
- 如果
variable不是null,则两者.ToString()都.Trim()不会返回null,并且检查?.是多余的。
所以你可以把
int? Length = variable?.ToString().Trim().Length;
或者
int Length = variable?.ToString().Trim().Length ?? -1;