c# – 为什么Resharper说:“使用此代码,从字符串[]到对象[]的共变量数组转换可能会导致写入操作时的运行时异常?

参见英文答案 > Co-variant array conversion from x to y may cause run-time exception                                    7个
这段代码:

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说:“使用此代码,从字符串[]到对象[]的共变量数组转换可能会导致写入操作时的运行时异常? - 代码日志