使用问号运算符 c# 在多个级别检查 null/empty
Check null/empty at multiple levels using question mark operator c#
考虑一下我有以下 class
class Dummy
{
List<DummyObj> list;
}
class DummyObj
{
string A;
int B;
}
我有一个 Helper Class,它接收一个 Dummy 类型的对象和 returns 列表索引 0 处的 A 值。我正在尝试处理所有 null 和空的情况(当传入 dummy 为 null 时,当 dummy 不为 null 时,但列表未初始化,当列表已初始化但它为空时。
public string GetA(Dummy dummy)
{
return dummy?.list?[0]?.A;
}
当 dummy 为 null 或 list 为 null 时,它工作正常。但是当列表为空时,我收到以下错误 - System.ArgumentOutOfRangeException: 'Index was out of range.必须为非负数且小于集合的大小。 (参数'index')'
我肯定在处理空列表时犯了一些错误。有人可以指出并帮我修正上面的说法吗?
编辑:为了澄清,我想 return 一个 null 以防上述任何条件成立。
使用以下内容:
return dummy?.list?.FirstOrDefault()?.A;
您应该避免在列表上使用索引,因为列表不是确定性的。如果您必须知道某个项目在集合中的位置,请使用数组。
考虑一下我有以下 class
class Dummy
{
List<DummyObj> list;
}
class DummyObj
{
string A;
int B;
}
我有一个 Helper Class,它接收一个 Dummy 类型的对象和 returns 列表索引 0 处的 A 值。我正在尝试处理所有 null 和空的情况(当传入 dummy 为 null 时,当 dummy 不为 null 时,但列表未初始化,当列表已初始化但它为空时。
public string GetA(Dummy dummy)
{
return dummy?.list?[0]?.A;
}
当 dummy 为 null 或 list 为 null 时,它工作正常。但是当列表为空时,我收到以下错误 - System.ArgumentOutOfRangeException: 'Index was out of range.必须为非负数且小于集合的大小。 (参数'index')'
我肯定在处理空列表时犯了一些错误。有人可以指出并帮我修正上面的说法吗?
编辑:为了澄清,我想 return 一个 null 以防上述任何条件成立。
使用以下内容:
return dummy?.list?.FirstOrDefault()?.A;
您应该避免在列表上使用索引,因为列表不是确定性的。如果您必须知道某个项目在集合中的位置,请使用数组。