C# 迭代对象列表,检查其属性是否已定义
我有一个物品清单。是否有一种方法可以迭代列表并检查其属性是否未定义 我试过类似的东西C# 迭代对象列表,检查其属性是否已定义,c#,listiterator,C#,Listiterator,我有一个物品清单。是否有一种方法可以迭代列表并检查其属性是否未定义 我试过类似的东西 list.FindAll(p => p.property == null); 但是,由于所需的属性是double,我得到了一个警告,表达式的计算结果将始终为false。值类型永远不能为null,因此在 double x; Console.WriteLine(x.ToString()); 您将看到“0”被写出 如果您感兴趣,您应该检查一下值类型不能为null,因此在 double x; Console.
list.FindAll(p => p.property == null);
但是,由于所需的属性是double,我得到了一个警告,表达式的计算结果将始终为false。值类型永远不能为null,因此在
double x;
Console.WriteLine(x.ToString());
您将看到“0”被写出
如果您感兴趣,您应该检查一下值类型不能为null,因此在
double x;
Console.WriteLine(x.ToString());
您将看到“0”被写出
如果您感兴趣,您应该签出,因为
double
不能为空,您可以使用double?
然后,继续你的逻辑,它是
null
意味着它没有定义因为double
不能为null,你可以使用double?
然后,继续您的逻辑,如果属性不能为0,则它的
null
表示未定义它。基于Yojin响应的此响应,最简单的方法是检查0而不是null
list.FindAll(p => p.property == 0);
当然,如果在任何一点上属性都可以等于0,那么应该避免这种情况。
当然有可空类型。您的财产申报如下:
public double? MyProperty { get; set; }
如果属性没有任何属性,则默认为
null
。如果属性不能为0。基于Yojin响应的此响应,最简单的方法是检查0而不是null
list.FindAll(p => p.property == 0);
当然,如果在任何一点上属性都可以等于0,那么应该避免这种情况。
当然有可空类型。您的财产申报如下:
public double? MyProperty { get; set; }
如果属性没有任何属性,那么默认情况下它是
null
。Adouble
永远不能为null,那么您希望发生什么呢?是否可以使用p=>p.property==default(double)
?您需要为不可为null的类型创建一个具有定义“null”等效值的比较器。示例:当double.MinValue
等于double.MinValue>时,您可以确定double
为空。因为即使使用default(type)
它也可能为您返回一个有效值。@TimSchmelter-可能会为不熟悉可空双精度的语法的人改写您的问题这现在看起来像是您问题的问号-即使知道我喜欢的语法:)@RandRandom:;你是对的,尽管问题通常不是以“也许”开头;-)double
永远不能为null,那么您希望发生什么?您可以使用p=>p.Property==default(double)
?您需要为不可为null的类型创建一个具有定义“null”等效值的比较器。示例:当double.MinValue
等于double.MinValue>时,您可以确定double
为空。因为即使使用default(type)
它也可能为您返回一个有效值。@TimSchmelter-可能会为不熟悉可空双精度的语法的人改写您的问题这现在看起来像是您问题的问号-即使知道我喜欢的语法:)@RandRandom:;你是对的,尽管问题通常不是以“也许”开头;-)