C#RequireNonDefaultAttribute奇怪的行为:IsValid()中等于vs ==

时间:2018-08-25 12:44:04

标签: c# asp.net .net guid validationattribute

长话短说:我做了一个RequireNonDefaultAttribute(我主要在DTO中使用它作为向导)

   [AttributeUsage(AttributeTargets.Property)]
    public class RequireNonDefaultAttribute : ValidationAttribute
    {
        public RequireNonDefaultAttribute()
            : base("The {0} field requires a non-default value.")
        {
        }

        public override bool IsValid(object value)
        {
            return !Equals(value, Activator.CreateInstance(value.GetType()));
        }
    }

顾名思义,它是一个属性,要求DTO中的属性不为当前类型的默认值。一切都很好。我想为什么不使用==而不是Equals方法。由于==是更多C#样式。所以我将代码转换成

public override bool IsValid(object value)
            {
                return !(value == Activator.CreateInstance(value.GetType()));
            }

无论如何,表达式总是被求值为false。我可以得到一些解释为什么会发生这种情况吗?

0 个答案:

没有答案