从x到y的协变量数组转换可能会导致运行时异常

乡村白痴

我有一个s(private readonly列表稍后,我将s添加到此列表,并将这些标签添加到如下所示:LinkLabelIList<LinkLabel>LinkLabelFlowLayoutPanel

foreach(var s in strings)
{
    _list.Add(new LinkLabel{Text=s});
}

flPanel.Controls.AddRange(_list.ToArray());

Resharper向我显示警告:Co-variant array conversion from LinkLabel[] to Control[] can cause run-time exception on write operation

请帮我弄清楚:

  1. 这是什么意思?
  2. 这是一个用户控件,不会被多个对象访问以设置标签,因此,保持这样的代码不会影响它。
安东尼·佩格拉姆

这是什么意思

Control[] controls = new LinkLabel[10]; // compile time legal
controls[0] = new TextBox(); // compile time legal, runtime exception

更笼统地说

string[] array = new string[10];
object[] objs = array; // legal at compile time
objs[0] = new Foo(); // again legal, with runtime exception

在C#中,允许将对象数组(在您的情况下为LinkLabels)引用为基本类型的数组(在本例中为Controls数组)。另一个对象a分配给Control数组也是编译时合法的。问题在于该数组实际上不是控件数组。在运行时,它仍然是LinkLabels的数组。这样,赋值或写操作将引发异常。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当循环正在运行时,如何运行协程并等待它由同步函数导致?

eclipse helios:tomcat项目-jar将不会导出或发布。运行时ClassNotFoundExceptions可能会导致

Proguard导致Android导航组件出现运行时异常

使用Material Button会导致ClassNotFound运行时错误

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

IDE的Java运行时(1.8u111)已过时-这可能会导致稳定性问题。在Ubuntu 16.10中打开PhpStorm时,请更新至1.8.0u112或更高版本

调用Device.RuntimePlatform会导致运行时异常

删除注释会导致运行时崩溃吗?

添加Firebase会导致有关混合版本的警告,可能导致运行时崩溃

插入公式会导致运行时错误1004

警告:变量在被赋值之前已通过引用传递。空引用异常可能在运行时导致

SQLite连接类中的函数导致运行时异常

Android Kotlin协程:等待可能会静默删除异常

在main()外部访问二维数组会导致运行时分段错误?

发射操作可能会破坏用于增加字段的运行时间

从“ long”到“ VARTYPE”的转换,可能会丢失数据

从“ long”到“ VARTYPE”的转换,可能会丢失数据

操作可能会破坏StructureMap中的运行时

当我使用PhantomJS在Chutzpah上运行时,为什么我的打字稿测试可能会失败

空指针异常导致运行时错误

使用安全Rust进行转换是否会导致运行时错误?

返回类成员引用变量会导致运行时错误

循环中的Getpivotdata会导致运行时错误1004

删除表控件会导致运行时错误

Petapoco:操作可能会破坏运行时间

警告变量“csCryptoStream”在被赋值之前被使用。运行时可能会导致空引用异常

ef core 2 - 在表“Y”上引入 FOREIGN KEY 约束“X”可能会导致循环或多个级联路径

C 分配字符数组导致错误访问运行时异常

变量 'loginusername' 在被赋值之前使用。运行时可能会导致空引用异常