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

时间:2014-01-13 22:55:05

标签: c# string

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

UserFirstName设置为“Joe”并将UserLastName设置为“Plumber”,SpeakerName只获得“Joe”。

spr.SpeakerName = presenterRec.UserFirstName ?? "" + " " + 
    presenterRec.UserLastName ?? "";

思想?

2 个答案:

答案 0 :(得分:14)

因为如果presenterRec.UserFirstName不为null,则获得该值,并且表达式的评估将在那里停止。

换句话说,您有一个操作订单问题。试试这个:

spr.SpeakerName = (presenterRec.UserFirstName ?? "") 
                  + " " +  
                  (presenterRec.UserLastName ?? "");

The Operator ?? reference

答案 1 :(得分:5)

null-coalescing运算符的优先级非常低,如MSDN所述。

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

(presenterRec.UserFirstName ?? "") 
            + " " + 
            (presenterRec.UserLastName ?? "")

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

presenterRec.UserFirstName + " " + presenterRec.UserLastName

也适用于这种特殊情况。