我喜欢空合并运算符,因为它可以轻松地为可空类型分配默认值。
int y = x ?? -1;
很不错,但如果我需要对x
进行一些简单的操作怎么办呢。例如,如果我想检查 Session
,那么通常我就要写更冗长的代码。
我希望我能这样做:
string y = Session["key"].ToString() ?? "none";
但是你不能这样做,因为在空值检查之前会调用.ToString()
方法,所以如果Session["key"]
为空,它将会失败。我最终会这样做:
string y = Session["key"] == null ? "none" : Session["key"].ToString();
它运行良好,而且我认为比三行代码的替代方案更好:
string y = "none";
if (Session["key"] != null)
y = Session["key"].ToString();
尽管那样做是可行的,但我仍然想知道是否有更好的方法。似乎无论如何我总是需要两次引用Session["key"]
;一次用于检查,另一次用于赋值。有什么想法吗?
.?
),就像Groovy一样。 - Cameron