0

そのため、タイトルは少し誤解を招きやすいので、最初に整理します。

次のコードを検討してください。

public static ADescription CreateDescription(string file, string name, params string[] othername)
{
    return new ADescription(file, name, othername.ToList<string>());
}

System.ArgumentNullExceptionこれは、ユーザーが最後に意図的に null を入力した場合にスローされます。例:

ADescription.CreateDescription("file", "name", null); // example

これで、基本的にothernameリストを取得および設定するプロパティができました。私の懸念は、次のようなすべての段階で確認する必要があることです (プロパティ内、およびこのメソッド内):

if (othername == null){
   // do nothing
}
else{
    othername.ToList<string>; // for example
}

なぜなら、 には null が受け入れられるからですothername。c# がこの機能をネイティブに提供する方法はありますか? ifothernameが null の場合、実際には ToList() を操作しません。

4

2 に答える 2

0

これを処理する拡張メソッドを作成できます。

public static class MyExtensionMethods
{
    public static List<T> ToListIfNotNull<T>(this IEnumerable<T> enumerable)
    {
        return (enumerable != null ? new List<T>(enumerable) : null);
    }
}

次に、他の方法で を使用する場所であればどこでも、拡張メソッドを置き換えることができますToList()

return new ADescription(file, name, othername.ToListIfNotNull());
于 2013-07-05T03:51:10.917 に答える