VB.NET调用ToHashSet遇BC30521重载解析错误的解决问询
解决VB.NET中ToHashSet扩展方法的重载冲突问题
当Enumerable(来自System.Linq)和MoreEnumerable(来自MoreLinq)的ToHashSet扩展方法签名一致时,编译器无法确定调用版本,触发BC30521错误,可通过以下几种方式解决:
直接调用静态类的方法,绕过扩展方法语法糖
扩展方法本质是静态类中的静态方法,直接指定要调用的静态类即可消除歧义:' 使用System.Linq中的ToHashSet Dim myOrderIdSet = Enumerable.ToHashSet(myOrderIds) ' 或者使用MoreLinq中的ToHashSet Dim myOrderIdSet = MoreEnumerable.ToHashSet(myOrderIds)移除不必要的命名空间引用
如果你的代码中不需要使用MoreLinq库的其他功能,直接移除Imports MoreLinq语句,编译器就会默认使用System.Linq提供的ToHashSet方法。为命名空间设置别名
给冲突的命名空间添加别名,调用时通过别名明确指定静态类:' 在文件顶部添加别名 Imports ML = MoreLinq ' 调用MoreLinq的ToHashSet Dim myOrderIdSet = ML.MoreEnumerable.ToHashSet(myOrderIds) ' 调用System.Linq的ToHashSet仍可直接使用Enumerable类 Dim myOrderIdSet = Enumerable.ToHashSet(myOrderIds)
内容的提问来源于stack exchange,提问作者obfuscated
相关产品推荐
相关产品推荐

