Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类型变量未在vb.net中定义_Vb.net_Datatable - Fatal编程技术网

类型变量未在vb.net中定义

类型变量未在vb.net中定义,vb.net,datatable,Vb.net,Datatable,我在C#中找到了一个例子,据我所知,VB.NET中除了“var”之外别无选择。我试图创建一个datatable,它将根据调用此函数的代码中的LINQ命令进行填充。我一直在寻找解决方案,但找不到任何有效的方法。如果您能为我提供帮助,我将不胜感激。请注意,我同时启用了Option Strict和Option推断 Private Shared Function ToDataTable(rows As List(Of DataRow)) As DataTable Dim table As New

我在C#中找到了一个例子,据我所知,VB.NET中除了“var”之外别无选择。我试图创建一个datatable,它将根据调用此函数的代码中的LINQ命令进行填充。我一直在寻找解决方案,但找不到任何有效的方法。如果您能为我提供帮助,我将不胜感激。请注意,我同时启用了Option Strict和Option推断

Private Shared Function ToDataTable(rows As List(Of DataRow)) As DataTable
    Dim table As New DataTable()
    table.Columns.Add("Title")
    table.Columns.Add("Console")
    table.Columns.Add("Year")
    table.Columns.Add("ESRB")
    table.Columns.Add("Score")
    table.Columns.Add("Publisher")
    table.Columns.Add("Developer")
    table.Columns.Add("Genre")
    table.Columns.Add("Date")

    For Each row As var In rows
        table.Rows.Add(row.ItemArray)
    Next

    Return table
End Function
C#使用'var'进行隐式类型化-VB使用选项inferon并省略类型。 VB等效物为:

Option Infer On

...

    For Each row In rows
        table.Rows.Add(row.ItemArray)
    Next row
C#使用'var'进行隐式类型化-VB使用选项inferon并省略类型。 VB等效物为:

Option Infer On

...

    For Each row In rows
        table.Rows.Add(row.ItemArray)
    Next row

标记好你的问题,在这种情况下没有C#问题。您的问题是您没有在foreach语句上编写实际类型。这将解决它:

For Each row As DataRow In rows
        table.Rows.Add(row.ItemArray)
    Next

标记好你的问题,在这种情况下没有C#问题。您的问题是您没有在foreach语句上编写实际类型。这将解决它:

For Each row As DataRow In rows
        table.Rows.Add(row.ItemArray)
    Next

VB等价物只是
Dim
,没有任何强类型

Dim sName = "John Henry"
在本例中,编译器推断类型
字符串
(当
选项推断
设置为
On


在您的示例中,您可以省略
As var
部分。编译器将推断类型
DataRow

VB等价物只是
Dim
,没有任何强类型

Dim sName = "John Henry"
在本例中,编译器推断类型
字符串
(当
选项推断
设置为
On

在您的示例中,您可以省略
As var
部分。编译器将推断类型
DataRow

。NET已具有该类型的扩展名:

Dim table As DataTable = rows.CopyToDataTable
.NET已具有该扩展:

Dim table As DataTable = rows.CopyToDataTable

As
需要像DataRow这样的实际类型,在本例中,C#中的
var
只是意味着“让编译器自动为我在这里输入正确的类型”。我不确定VB是否有一个等价的类型,但你可以用实际的类型名替换它。
As
需要一个实际的类型,比如C中的DataRow,这里的
var
,意思是“让编译器自动为我在这里输入正确的类型”。我不确定VB是否有等效项,但您可以用实际类型名称替换它。正如“var”允许您不指定实际类型一样,VB允许使用选项inferon+类型省略。正如“var”允许您不指定实际类型一样,VB允许使用选项inferon+类型省略。您丢失了something@T.S.-是的,我想象我是:-)你可以想象你想要的一切,但如果没有
选项,推断你的代码将无法按你的方式工作expect@T.S.-这是Visual Studio的默认设置。如果它关闭了,那是因为你把它放在那里了。记住在所有的对话中都要友好:-)“VisualStudio默认”-这方面几乎没有变量。只有当缺少特定版本的VS和特定版本的项目时,它才是默认值something@T.S.-是的,我想我是:-)你可以想象你想要的一切,但是没有
选项expect@T.S.-这是Visual Studio的默认设置。如果它关闭了,那是因为你把它放在那里了。记住在所有的对话中都要友好:-)“VisualStudio默认”-这方面几乎没有变量。只有当存在特定版本的VS和特定版本的Project时,它才是默认值