私は非常に奇妙な問題に直面していますが、どこに問題があるのかわかりません。私がコード内を歩き、すべてのシナリオを分析すると、私は を参照しても、それはArgumentNullExceptionを介して行うことができます。IList.Distinctメソッドが、指定されたシナリオでArgumentNullExceptionをスローする方法
しかし、何とか本番サーバーでは、次の例外スロー:
例外の詳細:System.ArgumentNullException:値をnullにすることはできませんが。 パラメータ名:System.Linq.Enumerable.ToList [TSOURCE(IEnumerable`1源)のソース
Iサンプル・コンソール・アプリケーションのコードを抽出したGetDistinctValues(IList`1 textNames)
で
。 GetDistinctValuesメソッドがこのArgumentNullExceptionをスローする可能性があるシナリオを教えてもらえますか?
サンプルコードスニペット:public static List<T> ToList<T>(this IEnumerable<T> source)
:
private IList<string> GetDistinctValues(IList<string> textNames)
{
var values = GetTextValues(textNames);
var trimmedValues = values.Select(value => value.Trim());
return trimmedValues.Distinct(StringComparer.InvariantCultureIgnoreCase).ToList();
}
public static IList<string> GetTextValues(IList<string> textNames)
{
var values = new List<string>();
var names = (List<string>)textNames;
if (!names.Any())
{
return null;
}
names.ForEach(x => values.Add(GetValue(x)));
return values;
}
private static string GetValue(string name)
{
// returns some value depending on name
return "someValue";
}
'if(!names.Any()) { を返します。 } 'GetTextValues'は候補のように見えます – stuartd
'!names.Any() 'は潜在的な原因です。' names'がnullの場合は失敗します。 –
例外が表示されます - System.Linq.Enumerable .ToList [TSource](IEnumerable'1ソース)。私はToList()に変換すると、この例外を生成することができますtrimmedValues.Distinct(StringComparer.InvariantCultureIgnoreCase).ToList();を返すことができますか? – App