尝试将C#代码转换为VB.Net时出错

时间:2011-03-29 10:02:51

标签: c# vb.net c#-to-vb.net

我正在将一些C#代码从另一个项目转换为VB.Net,但以下代码引发了错误

Dim obj As System.Collections.ArrayList()
obj = HTMLWorker.ParseToList(New StreamReader("../sample.htm",encoding.Default),
styles)

错误是'类型Systems.Collections.Generic.List()的值无法转换为'Systems.Collections.Arraylist()'

原始C#代码是

System.Collections.ArrayList obj;
obj = HTMLWorker.ParseToList(new StreamReader("../sample.htm",Encoding.Default),
styles);

什么是正确的VB代码?

1 个答案:

答案 0 :(得分:4)

我认为这与C#/ VB无关。在我看来

  • 对于您的C#代码,您使用了库的早期版本,它返回了一个ArrayList和
  • 对于您的VB代码,您使用的是返回通用列表的较新版本。

最简单的解决方案是使用类型推断:

// C#
var obj = HTMLWorker.ParseToList(new StreamReader("../sample.htm", Encoding.Default), styles);

'' VB 
Dim obj = HTMLWorker.ParseToList(New StreamReader("../sample.htm", Encoding.Default), styles)

请注意,要使用此功能,您需要在项目属性中将“Option Infer”设置为“On”。

如果您不想使用类型推断,则需要使用正确的类型声明obj。要确定正确的类型,请查看ParseToList的文档或在键入HTMLWorker.ParseToList(时阅读IntelliSense提供的信息。例如,如果ParseToList返回IElement s的通用List,则正确的语法为:

Dim obj As Systems.Collections.Generic.List(Of IElement)
obj = ...