4

目前我有以下三元运算:

string value = "";

value = Company == null ? Name : Name + "," + Company;

一切都很好。但是,我想检查 Company 是 null 还是“”。

有没有办法使用三元语句来做到这一点?

4

4 回答 4

11

用于string.IsNullOrEmpty检查 null 和空字符串。

value = string.IsNullOrEmpty(Company) ? Name : Name + "," + Company;

如果您使用的是 .Net 框架 4.0 或更高版本,并且您也想将空格视为空字符串,那么您可以使用string.IsNullOrWhiteSpace

于 2013-11-11T19:47:01.660 回答
10

使用这个String.IsNullOrWhiteSpace

value = string.IsNullOrWhiteSpace(Company) ? Name : Name + "," + Company;

当然你也可以使用这个:

value = (Company == null || Company == "") ? Name : Name + "," + Company;

只是为了澄清您可以使用更多的完整语句

于 2013-11-11T19:47:19.130 回答
3

使用IsNullOrEmpty

value = string.IsNullOrEmpty(Company) ? Name : Name + "," + Company;

关于是否在 SO 上使用 IsNullOrEmpty 与 IsNullOrWhitespace 存在很大的争论: string.IsNullOrEmpty(string) vs. string.IsNullOrWhiteSpace(string)

我最喜欢的评论是:

就性能而言,IsNullOrWhiteSpace 并不理想但很好。方法调用将导致小的性能损失。此外,如果您不使用 Unicode 数据,IsWhiteSpace 方法本身有一些可以删除的间接方法。与往常一样,过早的优化可能是邪恶的,但它也很有趣。

请参阅此处的参考

于 2013-11-11T19:48:10.537 回答
1

如果您不想使用字符串函数,请执行

value= (Company==null || Company=="")?Name:Name + "," + Company;

它可能会稍微快一点。如果您知道 Company 更可能是 null 还是 "",请将最有可能的一个放在第一位,它会更快,因为第二个不会被评估。

于 2013-11-11T19:50:06.830 回答