小编AKo*_*zak的帖子

True 条件评估结果为 false

我正在编写一个基本模型验证器,它使用带有自定义“必需”属性的反射。当模型传递到验证器方法时,将检查所有属性是否包含此必需属性。复杂类型也会被递归验证。当找到具有此属性的属性时,如果它是可为 null 的类型,它将将该值与 null 进行比较,否则它将与默认值进行比较。

我在将不可空类型与默认类型进行比较时遇到问题。对于 int 类型,以下条件的计算结果为 false,但它应该为 true:

if (prop.GetValue(testObject) == default)
{
    Console.WriteLine($"{VALIDATION_FAILED_MESSAGE}: {baseObjectName}{testObject.GetType().Name}.{prop.Name} is null.");
    isNullorDefault = true;
}

Run Code Online (Sandbox Code Playgroud)

我在调试器中看到,所比较的值无疑是默认值 -> default(int) == 0,但它的计算结果为 false。为什么?

在此输入图像描述

c# reflection

1
推荐指数
1
解决办法
59
查看次数

标签 统计

c# ×1

reflection ×1