使用默认值检查 C# 6 中的 null
Check null in C# 6 with default value
我正在使用 C# 6 并且我有以下内容:
public class Information {
public String[] Keywords { get; set; }
}
Information information = new Information {
Keywords = new String[] { "A", "B" };
}
String keywords = String.Join(",", information?.Keywords ?? String.Empty);
我正在检查信息是否为空(在我的真实代码中可能是)。如果是,则加入 String.Empty,因为 String.Join 在尝试加入 null 时会出错。如果它不为 null 则只需加入 information.Keywords.
但是,我得到这个错误:
Operator '??' cannot be applied to operands of type 'string[]' and 'string'
我正在查看一些博客,据说这会奏效。
我是不是漏掉了什么?
执行此检查并将字符串连接成一行的最佳替代方法是什么?
由于类型必须在 ?? (null-coalescing) 运算符的任一侧匹配,因此您应该传递一个字符串数组,在这种情况下,您可以传递一个空字符串数组。
String keywords = String.Join(",", information?.Keywords ?? new string[0]);
最好的替代方法是在 加入字符串之前检查 是否为空:
var keywords = information?.Keywords == null ? "" : string.Join(",", information.Keywords);
我正在使用 C# 6 并且我有以下内容:
public class Information {
public String[] Keywords { get; set; }
}
Information information = new Information {
Keywords = new String[] { "A", "B" };
}
String keywords = String.Join(",", information?.Keywords ?? String.Empty);
我正在检查信息是否为空(在我的真实代码中可能是)。如果是,则加入 String.Empty,因为 String.Join 在尝试加入 null 时会出错。如果它不为 null 则只需加入 information.Keywords.
但是,我得到这个错误:
Operator '??' cannot be applied to operands of type 'string[]' and 'string'
我正在查看一些博客,据说这会奏效。
我是不是漏掉了什么?
执行此检查并将字符串连接成一行的最佳替代方法是什么?
由于类型必须在 ?? (null-coalescing) 运算符的任一侧匹配,因此您应该传递一个字符串数组,在这种情况下,您可以传递一个空字符串数组。
String keywords = String.Join(",", information?.Keywords ?? new string[0]);
最好的替代方法是在 加入字符串之前检查 是否为空:
var keywords = information?.Keywords == null ? "" : string.Join(",", information.Keywords);