1

C# 4.0 中是否支持在一行中做到这一点?

我为对象做了:

 if (ReferenceEquals(null, myDynamicVar))

所以现在我需要看看这是否为零。如何做到这一点,是否有一个可以同时做到的声明?

4

3 回答 3

4
if (ReferenceEquals(null, myDynamicVar) || Equals(0, myDynamicVar)) ...
于 2012-08-15T14:13:09.960 回答
3
public bool IsDefault<T>(T value)
{
    if(value == null) return true;
    return value.Equals(default(T));
}

int v = 5;
object o = null;
IsDefault(v); //False
IsDefault(0); //True
IsDefault(o); //True
IsDefault("ty"); //False
于 2012-08-15T14:15:33.017 回答
2

邋遢:

if (ReferenceEquals(null, myDynamicVar) || myDynamicVar ==
   (myDynamicVar.GetType().IsValueType ? Activator.CreateInstance(myDynamicVar.GetType()) : null)
{
    //Code greatness
}

清洁器:

    public static bool IsDefault(dynamic input)
    {
        if (input == null)
        {
            return true;
        }
        else if (input.GetType().IsValueType)
        {
            return input == Activator.CreateInstance(input.GetType());
        }
        else
        {
            return false;
        }
    }
于 2012-08-15T14:15:11.243 回答