1

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 に答える