2

オブジェクトがnullかどうかをチェックする.ToString()に似たメソッドを作成しようとしています。クラスを呼び出さずにアクセスできるようにする方法を知ったばかりです

public class ObjectExtensions
{
    public static bool IsNull(object obj)
    {
        bool val = false;
        if (obj == null)
        { val = true; }
        return val;
    }
}
4

4 に答える 4

10

thisオブジェクトを静的にするだけでなく、真の拡張メソッドにするための修飾子がありません。

public static class ObjectExtensions
{
    public static bool IsNull(this object obj)
    {
        return obj == null;
    }
}

次に、次のように呼び出すことができます。

var fooIsNull = foo.IsNull();
// which is syntactic sugar for
fooIsNull = ObjectExtensions.IsNull(foo);
于 2012-11-06T18:25:16.713 に答える
2

クラスは静的である必要があり、拡張変数タイプの前に「this」キーワードが必要です。

public static class ObjectExtensions
{
    public static bool IsNull(this object obj)
    {
        bool val = false;
        if (obj == null)
        { val = true; }
        return val;
    }
}

また、単一のブールチェックを実行しているため、その結果を直接返すことができます。

public static class ObjectExtensions
{
    public static bool IsNull(this object obj)
    {
        return obj == null;
    }
}

ここに拡張メソッドのMSDNエントリへのリンクがあります

于 2012-11-06T18:25:03.033 に答える
1

あなたは静的な方法が必要だと考えていたのは正しかった。これが、null値に対するnullポインター例外を回避する唯一の方法です。ただし、拡張メソッドを使用して偽造することができます。

public static class ObjectExtensions
{
    public static bool IsNull(this object obj)
    {
        return obj == null;
    }
}

また、実装は機能しますが、非常に複雑であることに注意してください。これを実装するのに1行しか必要ありません。

于 2012-11-06T18:25:22.440 に答える
1
public static class ObjectExtensions
{
    public static bool IsNull(this object obj)
    {
        return obj == null;
    }
}
于 2012-11-06T18:25:36.557 に答える