4

我需要在 Visual Basic 中运行一些与 C# 中等效的代码:

for(var item in removeRows)
{
   two.ImportRow(item);
}

我知道在 VB 中最接近声明“var”的方法基本上是

Dim something =

但是,您将如何在 foreach 循环中执行此操作?

4

8 回答 8

5

您只需使用:

For Each item In removeRows
    two.ImportRow(item)
Next

VB 中的As datatype规范是可选的。有关详细信息,请参阅For Each文档。

于 2012-09-07T19:41:13.943 回答
4

使用 Option Infer On,您可以去掉“As ...”,然后推断类型。使用 Option Infer Off 时,如果您不使用该类型,则将假定为“对象”类型。

于 2012-09-07T20:25:41.433 回答
3

正如其他人提到的那样,如果您有选项推断,则 As Type 是选项。我怀疑您的项目关闭了选项推断(这是导入在 .Net 2.0 中启动的现有项目时的默认设置)。在项目文件的顶部或项目的编译设置中打开 Option Infer On。

Option Infer On
'' This works:
For Each item In removeRows
   two.ImportRow(item)
Next

Option Infer Off
'' Requires:
For Each item As DataRow In removeRows
   '' I'm assuming the strong type here. Object will work with Option Strict Off
   two.ImportRow(item)
Next
于 2012-09-07T20:11:07.330 回答
1
    For Each item As Object in removerows
       two.ImportRow(item)
    Next

在 VB.NET (VB9) 中省略类型将隐式键入变量。

于 2012-09-07T19:42:02.117 回答
0

在 For Each 文档中写到As Type 是 optional

所以

For Each row in removeRows
...
Next
于 2012-09-07T19:41:56.577 回答
0

你可以试试 (With Object), type 是可选的

For Each item As Object In removeRows
    two.ImportRow(item)
Next
于 2012-09-07T19:43:03.387 回答
0

像这样的东西:

   Dim siteName As String
   Dim singleChar As Char
   siteName = "HTTP://NET-INFORMATIONS.COM"
   For Each singlechar In siteName
        two.ImportRow(singleChar);
   Next
于 2012-09-07T19:43:17.200 回答
0

您不需要 vb 中的“as”:

For Each p  In Process.GetProcesses()
    Debug.WriteLine(p.ProcessName)
Next
于 2012-09-07T19:43:17.733 回答