Ted*_*Ted 2 .net vb.net generics visual-studio
具有讽刺意味的是,在将一堆旧的Arraylists转换为使用通用List(Of foo)集合时,为了提高类型安全性,我在List.AddRange()方法中遇到了意外行为.
鉴于以下代码,我本来期望编译器错误,但我没有得到一个,并且项目运行直到AddRange调用,其中'无法将List(Of bar)转换为List(Of foo)'异常是抛出.
Dim barList As List(Of bar) = BarFunctionsLib.GetBarList()
Dim fooList As New List(Of foo)
fooList.AddRange(barList)
Run Code Online (Sandbox Code Playgroud)
我不应该尝试将List(Of bar)传递给List(Of foo)上的AddRange方法吗?我没有通过我在VS2015中的编译器设置,也许他们过去已经摆弄过,现在让它通过?
任何想法都将受到赞赏,因为将工作转换为将Arraylists转换为通用列表的整个理由是为了防止这样的错误.
您需要打开Option Strict以获得有关此的编译器错误 - 最简单的方法是放置
Option Strict On
Run Code Online (Sandbox Code Playgroud)
在源文件的顶部.
对现有项目更强大的解决方案是转到项目属性,在"编译"部分中为项目全局设置它.
正如蒂姆在评论中提到的那样,最好的解决方案是将所有新VB项目的设置更改为默认设置:

| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |