为什么Resharper会用此代码说“从字符串[]到对象[]的协变量数组转换会在写操作时导致运行时异常”?

克莱·香农

这段代码:

comboBoxMonth.Items.AddRange(UsageRptConstsAndUtils.months.ToArray());

public static List<String> months = new List<String>
{
    "Jan",
    "Feb",
    "Mar",
    "Apr",
    "May",
    "Jun",
    "Jul",
    "Aug",
    "Sep",
    "Oct",
    "Nov",
    "Dec"
};

变成类似R#curmudgeon的抱怨,“从字符串[]到对象[]的协变量数组转换会在写操作时导致运行时异常”。

实际上,这段代码可以完美地工作-组合框中填充了月份值;Resharper打算做什么,我该如何解决它的疑问?

如果仅是通用列表可能包含错误的数据,我就不必担心-如果有问题,查找问题很容易。

雅库布·洛尔兹(Jakub Lortz)

该方法comboBoxMonth.Items.AddRange需要一个object[]参数。months.ToArray()string[]从强制string[]转换object[]是有效的,但是如果该方法尝试修改数组的元素,则会出现运行时错误。在这种情况下,它不是,所以您可以忽略该警告。

如果让您烦恼,可以使用 ToArray<object>()

comboBoxMonth.Items.AddRange(UsageRptConstsAndUtils.months.ToArray<object>());

它会返回,object[]并且不需要强制转换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章