-5

インスタンス (.NET Framework ではなく) で仮想IsNullOrEmpty()メソッドを使用するListと、インスタンスが事実上nullの場合、オブジェクト例外のインスタンスに設定されていないオブジェクト参照がスローされるか、このようなものがスローされるのではないかと考えていました。これを考慮すると、 nullインスタンスでメソッドを呼び出すことは可能ですか?

4

7 に答える 7

12

のみのIsNullOrEmpty()はありません。後者の場合、それは静的メソッドであるためインスタンスは必要ありません。チェックする文字列参照を渡すと、そこで null をチェックできます。ListString

于 2013-11-05T13:03:48.937 に答える
6

拡張メソッドは、null の「this」パラメーターを取ることができます。フレームワークのリストの IsNullOrEmpty メソッドについては知りませんが、次のように実装されると想像してください。

public bool IsNullOrEmpty<T>(this IList<T> list)
{
    if (list == null) return true;
    return list.Count == 0;
}

null 参照でこの (または他の) 拡張メソッドを問題なく呼び出すことができます。

List<int> nullList = null;
if (nullList.IsNullOrEmpty())
{
    ...
}
于 2013-11-05T13:08:05.690 に答える
3

AFAIKIsNullOrEmptyは class のメソッドにすぎず、System.Stringでは使用できませんList。拡張メソッドではなく、静的メソッドです。あなたはこのように呼び出します:

string.IsNullOrEmpty(text);

そして、このようではありません

text.IsNullOrEmpty();

したがって、参照がオブジェクトのインスタンスに設定されていないかどうかをチェックするのに問題はありません。

于 2013-11-05T13:04:29.120 に答える
1

問題の文字列のインスタンスをパラメーターとして受け取る静的メソッドです。

public static bool IsNullOrEmpty(
    string value
)

http://msdn.microsoft.com/en-us/library/system.string.isnullorempty%28v=vs.110%29.aspx

IsNullOrEmptyに対して定義された BLC にメソッドがありませんList

拡張メソッドを簡単に作成できます。

namespace System
{
    public static class StringExtensions
    {
        public static bool IsNullOrEmpty(this string s)
        {
            return string.IsNullOrEmpty(s);
        }
    }
}
于 2013-11-05T13:03:42.633 に答える
1

指摘されているように、リストにはそのような方法はありません。ただし、拡張メソッドを作成するのは簡単です。

public static bool IsNullOrEmpty<T>(this IList<T> list)
{
     return (list == null || list.Count == 0);
}

null の例外をスローする場合:

public static bool IsEmpty<T>(this IList<T> list)
{
    if (list == null)
        throw new ArgumentNullException("list");

    return (list.Count == 0);
}
于 2013-11-05T13:08:15.627 に答える
0

IsNullOrEmpty()はサポートしていません。文字List列のみです。以下はIsNullOrEmptymsdn からの実装です。

result = s == null || s == String.Empty;

リストを確認したい場合は、次のように独自の拡張メソッドを記述してそれを行うことができます。

  public static bool IsNullOrEmpty<T>(this ICollection<T> collection)
    {
        if (collection == null)
            return true;

        return collection.Count == 0;
    }
于 2013-11-05T13:14:34.760 に答える