gpt4 book ai didi

.net - 通用列表 AddRange() 类型安全

转载 作者:行者123 更新时间:2023-12-05 01:00:38 26 4
gpt4 key购买 nike

具有讽刺意味的是,在将一堆旧 Arraylist 转换为使用通用 List(Of foo) 集合时,为了提高类型安全性,我在 List.AddRange() 中遇到了意外行为方法。

鉴于以下代码,我预计会出现编译器错误,但我没有得到,并且项目一直运行到 AddRange 调用,其中 '无法将 List(Of bar) 转换为 List(的 foo)' 抛出异常。

Dim barList As List(Of bar) = BarFunctionsLib.GetBarList()

Dim fooList As New List(Of foo)
fooList.AddRange(barList)

我尝试将 List(Of bar) 传递到 List(Of foo) 上的 AddRange 方法时,编译器不应该接收到这种尝试吗?我没有在 VS2015 中完成我的编译器设置,也许他们在过去被摆弄过,现在让这个通过?

任何想法都将不胜感激,因为将 Arraylists 转换为通用 Lists 的全部理由是为了防止这样的错误。

最佳答案

您需要打开 Option Strict 以获得关于此的编译器错误 - 最简单的方法是放置

Option Strict On

在源文件的顶部。

对于现有项目,一个更强大的解决方案是转到您的项目属性,并在“编译”部分为您的项目全局设置它。

作为Tim mentioned in a comment但是,最好的解决方案是将设置更改为所有新 VB 项目的默认设置: enter image description here

关于.net - 通用列表 AddRange() 类型安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com