This question already has answers here:
Co-variant array conversion from x to y may cause run-time exception

(7个答案)


5年前关闭。




这段代码:
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打算做什么,我该如何解决它的疑问?

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

最佳答案

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

如果您不满意,可以使用ToArray<object>()

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

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

关于c# - 为什么Resharper用此代码说 “Co-variant array conversion from string[] to object[] can cause run-time exception on write operation”? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33555608/

10-12 12:42
查看更多