2013-07-22 11 views
5

użyłemRóżnica między double [* *], aby podwoić [] [] w C#

double [,] marks=new double[26,5] 
int[] function = object.verify(marks) 

public void verifymarks(double[][] marks) 

błąd jest nie można przekonwertować z podwójnym [,] podwoić [] [] próbowałem do wyszukiwania w Internecie, ale nie może znaleźć żadnego rozwiązania. Właśnie zacząłem używać C#. Proszę pomóż. THankx z góry

+0

Pierwsza to JaggedArray, a druga to 2D-Array. Teraz wyszukaj według tych nazw. – UsmanAzam

+0

Przeczytaj http://stackoverflow.com/questions/4648914/why-we-have-but-jagged-array-and-multidimentional-array – UsmanAzam

+0

dziękuję. było pomocne – user1700961

Odpowiedz

11

double[][] jest postrzępiony. To dosłownie tablica tablic.

double[,] jest wielowymiarowy. Otrzymuje specjalne traktowanie kompilatora.

Mają różne układy pamięci. double[][] to tablica, która zawiera odniesienia do innych macierzy, natomiast double[,] jest ułożona jednowymiarowo dla łatwiejszego użycia.

Kolejną różnicą jest to, jakie dane mogą pomieścić. Poszarpana Tablica może być tak:

1231243245345345345345 
23423423423423 
2342342343r234234234234234234 
23423 

Podczas wielowymiarowa tablica ma być idealny stół, tak:

34534534534534 
34534534534533 
34534534534534 
34534534534545 

sposób uzyskać wokół byłoby użyć zerowalne int s.

Teraz, aby rozwiązać swój problem:

zmienić podpis metody do public void verifymarks(double[,] marks) aw metodzie nic zmieniać, która używa marks[x][y] do marks[x,y].

+1

Czy możesz rozwinąć w części "dostaje specjalny traktowaniu kompilatora"? Brzmi interesująco. – Gray

+0

@Gray Będę próbował, ale lepszą osobą, o którą można poprosić, jest Eric Lippert. –

4

double[][] nazywa się Jagged array. Jest to tablica tablic (w ten sam sposób można utworzyć listę list). Dzięki tej strukturze możesz określić inny rozmiar dla każdej pod-tablicy.

reprezentują np:

double[][] jaggedArray = new double[2][]; 
jaggedArray[0] = new double[5]; 
jaggedArray[1] = new double[151]; 

Drugi zapisu double[,] jest 2D tablica (Multidimensional array w ogóle). Możesz zobaczyć to jako stół.

Bardzo przydatna funkcja wielowymiarowej tablicy jest inicjalizacja:

string[,] test = new string[3, 2] { { "one", "two" }, 
            { "three", "four" }, 
            { "five", "six" } }; 
+0

jeśli oba są tablicami, dlaczego nie mogę użyć jaggedarray [5] [1] = multidimarray [5,1] – user1700961

+0

, jeśli 'jaggedarray' i' multidimarray' zawiera ten sam typ danych, który powinien działać. –

+0

Próbowałem dwukrotnie [] [] jaggedarray = new double [27] []; dla (int j = 0; j <20; j ++) { jaggedarray [j] [0] = wartości [j, 0]; jaggedarray [j] [1] = wartości [j, 3]; } _ ale to nie działa. Obydwa są podwójne – user1700961

2

Oto wideo z Dump() funkcji LINQPad użytkownika.

enter image description here

Pierwszym jest double[,], który tworzy matrycę. Druga to double[][], która jest po prostu tablicą tablic.

Powiązane problemy