使用旧版应用程序,ASP.Net,c#。 尝试将我的log4net消息附加到SessionWrapper.UserDisplayName
麻烦之处在于,如果未定义sessionwrapper,我不希望它被炸毁,我只希望它将其视为null或空,而我正努力避免编写多行代码。
以此为基础的想法:
banana = null;
string result2 = banana?.prop1 + "something new";
结果2 =新事物
将该概念应用于我的代码:
SessionWrapper?.UserDisplayName + "error message"
我得到一个错误编译说: “ SessionWrapper是一种类型,在当前上下文中是无效的”
任何见解都会受到赞赏-
答案 0 :(得分:1)
类型不是值,因此永远不会null
。如果UserDisplayName
是此类型的静态属性,则它可能为null;否则,它可能为null。但是,可以将null
与字符串连接起来。 null
将被视为空字符串。
简单地写
string result = SessionWrapper.UserDisplayName + "error message";
在banana?.prop1
中,空条件运算符仅在banana
为null
时才有用。该表达式等效于banana == null ? (string)null : banana.prop1
。
如果要处理prop1
可能为null的情况,请使用null-coalescing运算符??
。
string result2 = (banana.prop1 ?? "<empty>") + "something new";
您当然可以将两者结合在一起。
string result2 = (banana?.prop1 ?? "<empty>") + "something new";
现在,banana
和prop1
都可以为空。在这两种情况下,您都将得到结果"<empty>something new"
。