0

以下两种方法中更好的方法是什么?如果可能,请建议任何其他更好的。

第一种方式:

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

4 回答 4

10

如果您要附加查询字符串参数,无论它们是否已填写,您都可以简单地执行此操作

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

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

于 2013-09-19T19:37:53.880 回答
6

我会选择显式变量:

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

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

阅读更干净(恕我直言)

于 2013-09-19T19:37:37.787 回答
1

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

sUri = String.Format("{0}&fn={1}&ln={2}", sUri, firstName ?? " ", lastName ?? " ");
于 2013-09-19T19:49:10.540 回答
1

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

sUri = sUri + String.Format("&fn={0}&ln={1}", firstName ?? " ", lastName ?? " ");
于 2013-09-19T19:40:34.593 回答