我想检查我的Listentry是否为null,但我不知道如何做。
注意: ID是一个整数
这是我的代码
if(MeineGaeste[i].ID !=null)
{
i++;
}
else
{
MeinGast.ID = i++;
test = false;
}
我想检查我的Listentry是否为null,但我不知道如何做。
注意: ID是一个整数
这是我的代码
if(MeineGaeste[i].ID !=null)
{
i++;
}
else
{
MeinGast.ID = i++;
test = false;
}
如上所述,int类型不能为null。如果没有设置值,则默认值为零。如果您认为值被设置为0,可以进行0检查...
否则,如果您想避免使用可为空的整数,您需要将其转换为字符串,然后执行检查。
String.IsNullOrEmpty(ID.ToString());
该函数返回一个布尔值,因此你可以将其放入if语句中。
int?
(意味着 ID
是一个 int
),那么 ID.toString()
将永远不可能产生空字符串,使得检查始终为 false。在这种情况下,将任何东西转换为字符串有什么帮助呢?如果 0 是一个有效值,你仍然无法检测到丢失的值。 - jpmc26ID == 0
检查值有什么优势呢?在这里转换为字符串毫无意义;没有功能上的理由这样做。而且,这个答案仍然没有解决如何表示或检测缺失值的问题。 - jpmc26ID
可以为null
,那么ID.ToString()
实际上会出错。 - jpmc26int
不能为null。另一方面,可为空的int?可以是null。话虽如此,你想要进行的检查是没有意义的。
将ID
的类型从int
更改为int?
后,您所做的检查具有含义,编译器也不会抱怨。
public int? ID { get; set; }
- Christos您可以使用此ID.HasValue属性,当它有值时返回true,如果为null则返回false。
由于普通的int
类型是值类型,所以它不能为null
。
您可以使用可空类型int?
作为属性ID
,该类型基本上是一个结构体,允许null
或任何int
值。有关更多文档,请参见MSDN、this question或this question。
如果无法更改ID
属性的类型,则解决方法可能是选择一个整数作为标记值,该值保证不会出现在您的模型中(例如Int32.MinValue
,因为大多数生成的ID似乎是正整数)。如果不必这样做,请不要选择此方法,因为这很可能会导致错误。如果您序列化带有该标记值的模型,我至少建议抛出异常。
int
还是int?
? - BlorgbeardID
成员被声明为int
,那么比较ID != null
就没有意义。编译时会发出警告。 - Jeppe Stig Nielsenelse
条件中调用无效逻辑(试图增加一个null
值,如果被调用应该会出错,假设它可以编译)。换句话说,它不够明确,无法理解作者的意图。 - jpmc26