我正在编写一个基本模型验证器,它使用带有自定义“必需”属性的反射。当模型传递到验证器方法时,将检查所有属性是否包含此必需属性。复杂类型也会被递归验证。当找到具有此属性的属性时,如果它是可为 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。为什么?