微调代码(C#),哪种方式更好?

时间:2013-09-19 19:34:44

标签: c# if-statement

在下面两个中做的更好的方法是什么?如果可能的话,请建议任何其他更好的。

第一种方式:

if (!string.IsNullOrEmpty(firstName) && !string.IsNullOrEmpty(lastName))
{
    sUri = sUri + "&fn=" + firstName + "&ln=" + lastName;
}
else if (!string.IsNullOrEmpty(firstName) && string.IsNullOrEmpty(lastName))
{
    sUri = sUri + "&fn=" + firstName + "&ln= ";
}
if (string.IsNullOrEmpty(firstName) && !string.IsNullOrEmpty(lastName))
{
    sUri = sUri + "&fn= &ln=" + lastName;
}
if (string.IsNullOrEmpty(firstName) && string.IsNullOrEmpty(lastName))
{
    sUri = sUri + "&fn= &ln= ";
}

第二种方式:

sUri = sUri + String.Format("&fn={0}&ln={1}", 
    (!string.IsNullOrEmpty(firstName) ? firstName : " "), 
    (!string.IsNullOrEmpty(lastName) ? lastName : " "));

4 个答案:

答案 0 :(得分:10)

如果您要附加查询字符串参数,无论它们是否已填写,您只需执行此操作

sUri = string.format("{0}&fn={1}&ln={2}", sUri, firstName, lastName);

(请注意,这不会附加空格,因为在URI的情况下你不需要这样做)

答案 1 :(得分:6)

我会选择明确的变量:

var sanitizedFirstName = string.IsNullOrEmpty(firstName) ? " " : firstName;
var sanitizedLastName = string.IsNullOrEmpty(lastName) ? " " : lastName;

sUri = string.Format("{0}&fn={1}&ln={2}", sUri, sanitizedFirstName, sanitizedLastName);

清洁阅读(imho)

答案 2 :(得分:1)

我相信这会给你相同的结果:

sUri = sUri + String.Format("&fn={0}&ln={1}", firstName ?? " ", lastName ?? " ");

答案 3 :(得分:1)

如果你真的需要这个空间,为什么不使用null-coalescing运算符?

sUri = String.Format("{0}&fn={1}&ln={2}", sUri, firstName ?? " ", lastName ?? " ");