将C#“var”翻译为VB.net

时间:2015-08-04 22:31:43

标签: vb.net

我以前在C#中使用过一个项目,现在我基本上在VB.net中做同样的项目。

我不知道如何将其翻译成VB.net

foreach (var obj in objs)

整个代码是这样的:

public void BinaryFileSerialize(List<Animal> objs, string filePath)
{
    FileStream fileStream = null;
    try
    {
        fileStream = new FileStream(filePath, FileMode.Create);
        BinaryFormatter b = new BinaryFormatter();
        foreach (var obj in objs)
        {
            b.Serialize(fileStream, obj);
        }
    }
    finally
    {
        if (fileStream != null)
            fileStream.Close();
    }

}

我试过在VB.net中这样做:

For Each obj As var In objs

整个代码:

 Public Sub BinaryFileSerialize(ByVal objs As List(Of Animal), ByVal filePath As String)
    Dim fileStream As FileStream = Nothing
    Try
        fileStream = New FileStream(filePath, FileMode.Create)
        Dim b As BinaryFormatter = New BinaryFormatter
        For Each obj As var In objs
            b.Serialize(fileStream, obj)
        Next
    Finally
        If (Not (fileStream) Is Nothing) Then
            fileStream.Close()
        End If
    End Try
End Sub

但我收到错误

  

未定义类型'var'。

有谁知道这个问题以及如何修复它?

4 个答案:

答案 0 :(得分:2)

完全跳过这个类型:

For Each obj In objs

您可以在MSDN上阅读有关VB.NET中的本地类型推断的更多信息:Local Type Inference (Visual Basic)

答案 1 :(得分:0)

试试这个:

Public Sub BinaryFileSerialize(objs As List(Of Animal), filePath As String)
    Dim fileStream As FileStream = Nothing
    Try
        fileStream = New FileStream(filePath, FileMode.Create)
        Dim b As New BinaryFormatter()
        For Each obj As Animal In objs
            b.Serialize(fileStream, obj)
        Next
    Finally
        If fileStream IsNot Nothing Then
            fileStream.Close()
        End If
    End Try

End Sub

答案 2 :(得分:-1)

Option Infer On作为第一行

后,请尝试以下声明
For Each obj In objs

答案 3 :(得分:-1)

假设你有:     Option Explicit Off

然后只需将循环更改为:     For Each obj In objs