Gibt es eine Möglichkeit, ein String Array mit zwei Elementen zu definieren?

7

Ich möchte ein zweidimensionales Array von Strings erstellen, bei dem die Länge einer Dimension 2 ist. Ähnlich wie bei

%Vor%

Machen

%Vor%

gibt mir

%Vor%

aber nicht

%Vor%

Array.

Nur neugierig, gibt es einen Trick, dynamisch zu bauen

%Vor%

Array irgendwie?

    
Alexander Prokofyev 13.11.2008, 07:00
quelle

5 Antworten

4

Nun, Sie könnten einigermaßen leicht eine Erweiterungsmethode schreiben, um das zu tun. So etwas (nur sehr leicht getestet):

%Vor%

Es ist eine kleine Schande, dass der obige Code T [] als Elementtyp verwendet. Aufgrund der generischen Invarianz kann ich zur Zeit keine Quelle IEnumerable<IEnumerable<T>> erstellen, was nett wäre. Eine Alternative könnte die Einführung eines neuen Typparameters mit einer Einschränkung sein:

%Vor%

Etwas behaart, aber es sollte funktionieren. (Natürlich erfordert die Implementierung auch einige Änderungen, aber das Grundprinzip ist das gleiche.)

    
Jon Skeet 13.11.2008, 07:32
quelle
17

Sie können dies tun.

%Vor%

Die Idee ist, dass das Schlüsselwertpaar das Array der von Ihnen replizierten Strings nachahmt.

    
Terrence 20.05.2012 07:36
quelle
2

Die einzige Möglichkeit wäre, die Funktion ToArray() selbst zu implementieren. Sie könnten es in Ihrer eigenen Sammlung implementieren (d. H.% Co_de%). Dies könnte genauso funktionieren wie StringTupleCollection (d. H. Internes Array wird bei Bedarf größer).

Ich bin mir jedoch nicht sicher, ob der Vorteil von ArrayList über [x,2] (oder sogar [x][2] signifikant genug wäre, um den Aufwand zu rechtfertigen.

Sie könnten auch eine Klasse List<string[2]> wie folgt schreiben:

%Vor%     
Robert Wagner 13.11.2008 07:21
quelle
0

Dies ist nicht möglich mit List<string[]> , da sich der Typ string[,] von string[] unterscheidet.

    
Andrew Kennan 13.11.2008 07:17
quelle
0

KeyValuePair funktionierte nicht für mich, wenn ich die Werte der Checkboxen auf dem Controller abrufen musste, da mein Modell. Die Liste der Zeilen war null.

%Vor%

Die KeyValuePair-Struktur verfügt nicht über einen parameterlosen Standardkonstruktor und kann nicht vom Modellbinder instanziiert werden. Ich empfehle eine benutzerdefinierte Modellklasse für Ihre Ansicht mit genau diesen Eigenschaften. ASP.NET MVC 3 Bindung Benutzerkontrolle vom Typ KeyValuePair zu ViewModel

Ich fand eine Implementierung einer Checkbox-Liste ohne die Verwendung von HTML-Helfer unter dem folgenden Link CheckboxList in MVC3. 0

    
hagensoft 05.09.2012 21:11
quelle