我正在用自定义对象的值创建一个字符串数组,如下所示:
foreach(MyObject o in MyObjectList)
string[] myArray = new string[] {o.id, o.number.toString(), o.whatever, ...}
这里的问题是,这些值中的任何一个都可以为 NULL,这当然会导致此代码崩溃。假设 o.number 是 NULL,其余的不是……在这种情况下,我仍然想填充其他值并将“NULL”作为字符串而不是 o.number。
除了检查每个值之外,还有什么好的方法吗?
谢谢:)
最佳答案
对于与此相关的项目,我通常定义一个扩展方法 ToStringOrNull
,如下所示:
public static string ToStringOrNull(this object o) {
return o == null ? null : o.ToString();
}
为了避免智能感知污染,如果您碰巧有一组有限的类型,这样的 ToStringOrNull
是有用的,您可以(我有时会这样做)避免将扩展添加到 object
而不是复制粘贴相关类型的一堆副本。该函数很容易写成单行代码,因此解决这种重复的代码生成是多余的。
然后,如果您希望用一些占位符文本替换字符串 null
,请使用 null 合并运算符。
例如
string[] myArray = new [] {
o.id, o.number.ToStringOrNull(), o.whatever, ...
};// .Select(s=>s??"NULL").ToArray(); //uncomment to replace null with "NULL"
关于c# - 在 C# 中构建字符串数组并检查空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884964/