c# - 在 C# 中构建字符串数组并检查空值?

标签 c# nullpointerexception

我正在用自定义对象的值创建一个字符串数组,如下所示:

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/

相关文章:

android - 如何使用 Viewpager 实现 ListView?

java - 什么是NullPointerException,我该如何解决?

java - 什么是NullPointerException,我该如何解决?

c# - 在正在序列化的对象中找不到 TypeLoadExceptionHolder

c# - 使用正则表达式从字符串中获取子字符串

c# - 解释这个 C# 代码 : byte* p = (byte*) (void*) Scan0;

java - 空指针和私有(private)成员,带 swing 的基本 Java GUI

c# - 正则表达式强制和可选组

c# - 需要遍历 SQL 表行,一次一个(表太大而无法使用适配器。填充)

onClick后的java空指针异常