字符串不像我期望的那样连接

Pet*_*ner 3 c# string

我只是不明白为什么下面的陈述没有像我期望的那样进行评估.

随着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)

运营商 ??参考


Com*_*hip 5

MSDN所述,null-coalescing运算符具有相当低的优先级.

如上所述,解决方案是添加括号

(presenterRec.UserFirstName ?? "") 
            + " " + 
            (presenterRec.UserLastName ?? "")
Run Code Online (Sandbox Code Playgroud)

但是,在.NET中的字符串连接中,空字符串被视为空字符串,所以实际上

presenterRec.UserFirstName + " " + presenterRec.UserLastName
Run Code Online (Sandbox Code Playgroud)

也适用于这种特殊情况.