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

use*_*652 0 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= ";
}
Run Code Online (Sandbox Code Playgroud)

第二种方式:

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

Bra*_*don 10

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

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

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

  • +1; 这个,那么多.除非空参数的空间是必要的(我非常怀疑),这绝对是要走的路. (2认同)

Chr*_*Wue 6

我会选择显式变量:

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

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

清洁阅读(imho)