我面临一个非常奇怪的问题,并不确定问题出在哪里。当我遍历代码并分析所有场景时,我不会在 中看到,无论如何它都可以通过ArgumentNullException。如何在给定的场景中引发ArgumentNullException IList.Distinct方法
但不知何故,在生产服务器,它抛出以下异常:
异常详细信息:System.ArgumentNullException:值不能为空。 参数名称:源
在System.Linq.Enumerable.ToList [TSource](IEnumerable`1源)
在GetDistinctValues(IList`1 textNames)
我已提取在一个示例控制台应用程序的代码。任何人都可以告诉我什么时候GetDistinctValues方法可以抛出这个ArgumentNullException?
的示例代码段:
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()) { return null;}'GetTextValues'''看起来像候选人 – stuartd
是的,我也认为'!names.Any()'是可能的罪魁祸首,因为如果'names'为null将会失败 –
异常显示 - System.Linq.Enumerable .ToList [TSource](IEnumerable'1 source)。可以返回trimmedValues.Distinct(StringComparer.InvariantCultureIgnoreCase).ToList();其中我将它转换为ToList()也可以生成此异常? – App