2015-08-04 4 views
1

Я раньше работал с проектом на C#, и теперь я в основном делаю тот же проект, но на VB.net.Перевод C# "var" на 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 

Но я получаю ошибку

типа 'вар' не определен.

Кто-нибудь знает проблему и как ее исправить?

+0

[вар] (https://msdn.microsoft.com/en-us/library/bb383973.aspx) –

+2

вы можете сериализовать весь список, а не каждый объект в нем по отдельности - на самом деле, чтение его одним «Animal» за раз может быть проблематичным (никогда не пробовали, но как бы вы знали, сколько байтов для чтения для каждого объекта?) – Plutonix

ответ

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 
-1

Попробуйте ниже после ввода Option Infer On в качестве первой линии

For Each obj In objs 
-1

Предполагая, что вы есть: Option Explicit Off

Тогда просто изменить цикл до: For Each obj In objs

Смежные вопросы