我只是不明白为什么下面的陈述没有像我期望的那样进行评估.
随着UserFirstName设置为"乔",并UserLastName设置为"管道工",SpeakerName是刚开"乔".
spr.SpeakerName = presenterRec.UserFirstName ?? "" + " " +
presenterRec.UserLastName ?? "";
Run Code Online (Sandbox Code Playgroud)
思考?
Ste*_*eve 14
因为如果presenterRec.UserFirstName不为null,则得到该值,表达式的评估就会停止.
换句话说,您有一个操作订单问题.试试这个:
spr.SpeakerName = (presenterRec.UserFirstName ?? "")
+ " " +
(presenterRec.UserLastName ?? "");
Run Code Online (Sandbox Code Playgroud)
如MSDN所述,null-coalescing运算符具有相当低的优先级.
如上所述,解决方案是添加括号
(presenterRec.UserFirstName ?? "")
+ " " +
(presenterRec.UserLastName ?? "")
Run Code Online (Sandbox Code Playgroud)
但是,在.NET中的字符串连接中,空字符串被视为空字符串,所以实际上
presenterRec.UserFirstName + " " + presenterRec.UserLastName
Run Code Online (Sandbox Code Playgroud)
也适用于这种特殊情况.