61 Stimmen

Wie deklariert man ein Array inline in VB.NET

Ich bin auf der Suche nach dem VB.NET-Äquivalent von

var strings = new string[] {"abc", "def", "ghi"};

84voto

gfrizzle Punkte 12199
Dim strings() As String = {"abc", "def", "ghi"}

0 Stimmen

Ich bin mir nicht sicher, ob mir der Array-Indikator im Variablennamen gefällt, da er gegen die üblichen Konventionen verstößt. Besonders in anderen Sprachen.

0 Stimmen

@ganjeii Nicht alle Sprachen: C zum Beispiel, aber auch und vor allem VBA, akzeptieren nur diese Syntax für Array-Deklarationen

0 Stimmen

Wie aus der nächsten Antwort hervorgeht, sind diese beiden gleichwertig: Dim strings() As String Dim strings As String()

46voto

Jon Skeet Punkte 1325502

Es gibt bereits viele richtige Antworten auf diese Frage, aber hier ist eine Version von "Bring einem Mann das Fischen bei".

Erstellen Sie zunächst eine kleine Konsolenanwendung in C#:

class Test
{
    static void Main()
    {
        var strings = new string[] {"abc", "def", "ghi"};
    }
}

Kompilieren Sie es unter Beibehaltung der Debug-Informationen:

csc /debug+ Test.cs

ausführen. Reflektor und öffnen Sie die Main-Methode - dann dekompilieren Sie zu VB. Am Ende erhalten Sie:

Private Shared Sub Main()
    Dim strings As String() = New String() { "abc", "def", "ghi" }
End Sub

So kamen wir zur gleichen Antwort, aber ohne VB zu kennen. Das wird nicht immer funktionieren, und es gibt viele andere Konvertierungswerkzeuge, aber es ist ein guter Anfang. Als erste Anlaufstelle ist es auf jeden Fall einen Versuch wert.

11 Stimmen

Ich stimme zu, dass Reflector in den Werkzeuggürtel jedes .NET-Entwicklers gehören sollte. Aber dafür wäre es einfacher, den Online-Konverter unter konverter.telerik.de

0 Stimmen

Dies ist gut geeignet, um festzulegen, dass {Nothing} ist ein Array aus String oder grundsätzlich jeder andere Typ, im Gegensatz zu einem Array von Object die ein Compiler in bestimmte besondere Szenarien wenn Sie nicht einschließen New String() vor den Inhalten.

10voto

Netricity Punkte 2192

In neueren Versionen von VB.NET, die Type Inferring unterstützen, funktioniert auch diese kürzere Version:

Dim strings = {"abc", "def", "ghi"}

6voto

David Mohundro Punkte 11297
Dim strings As String() = New String() {"abc", "def", "ghi"}

5 Stimmen

Ah, aber das hat mir geholfen, eine Inline-Erklärung an eine Funktion zu übergeben: MyFunction(somestring, New String() {"abc", "def", "ghi"})

5voto

Jesper Palm Punkte 7050

Ich bin kein VB-Typ. Aber vielleicht so etwas wie dies?

Dim strings = New String() {"abc", "def", "ghi"}

(Etwa 25 Sekunden zu spät...)

Tipp: http://www.developerfusion.com/tools/convert/csharp-to-vb/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X