2013-02-26 15 views
9

Próbuję zainicjować dwuwymiarową tablicę wartości całkowitych za pomocą -1. Kiedy tworzę nową tablicę, jest ona automatycznie wypełniana 0. Wiem, że mogę to zrobić z 2 dla cykli, ale wyobrażam sobie, że powinien istnieć jakiś sposób robienia tego podczas budowania tablicy (więc nie mam aby przejść przez to dwa razy), tak aby zamiast 0 wstawić podaną wartość. Czy to możliwe? Jeśli nie podczas wstępnego budowania tablicy, czy jest jakiś inny sposób zapisu kodu lub czasu, czy utknąłem z 2 dla cykli?Jak zainicjować tablicę wielowymiarową z inną domyślną wartością

+3

Jak duże są te tablice? –

+0

Rozmiar tablicy jest oparty na wprowadzeniu funkcji, która go tworzy, zapomniałem o tym wspomnieć. Bezpośrednia inicjalizacja nie wchodzi w grę. – kovike

Odpowiedz

11

W wielowymiarowej tablicy pętle są najprawdopodobniej najlepszym rozwiązaniem, chyba że tablica jest wystarczająco mała, aby zainicjować bezpośrednio w kodzie.

Jeśli używasz jagged array, możesz zainicjować pierwszą pod-tablicę, a następnie użyć Array.Copy, aby skopiować te wartości do każdej drugiej pod-tablicy. Będzie to wymagało jednej iteracji poprzez pierwszą macierz podrzędną i jedną pętlę przez zewnętrzne macierze N-1, ale operacja kopiowania będzie szybsza niż pętle.

+0

Rzeczywiście używam tablicy wielowymiarowej. Cóż, myślę, że będę musiał pójść na "oldschoolowy" sposób. – kovike

15

spróbować czegoś takiego: int[,] array2D = new int[,] { { -1 }, { -1 }, { -1 }, { -1} };

lub wymiaru int[,] array2D = new int[4,2] { { -1,-1 }, { -1,-1 }, { -1,-1 }, {-1,-1} };

+4

Nie wiem, dlaczego -1 - Jest to całkowicie poprawne dla małych tablic 2D i najlepszą opcją w tym przypadku. +1 ode mnie ... (To przestaje być możliwe do utrzymania dość szybko, jeśli macie są duże) –

+0

Tak samo ode mnie, zapomniałem wspomnieć o ważnym szczególe w pierwotnym pytaniu. – kovike

+0

To dobrze, @ReedCopsey odpowiedział dobrze na twoje pytanie, tak myślę – TravellingGeek

Powiązane problemy