2009-07-08 15 views

cevap

7

Hayır, bu mümkün değil. Her bir öğeyi kopyalamanız gerekiyor. Eğer pürüzlü dizi kullanırsanız

, gayet güzel çalışıyor:

// create array of arrays 
object[][] tableOfObject = new object[10][]; 
// create arrays to put in the array of arrays 
for (int i = 0; i < 10; i++) tableOfObject[i] = new object[10]; 

// get row as array 
object[] rowOfObject = GetRow(); 
// put array in array of arrays 
tableOfObjects[0] = rowOfObjects; 

satırlara olarak tüm verileri alıyorsanız, tabii ki Dizilerin dizideki diziler koyar döngü gerekmez , her neyse onları değiştirirsiniz.

+0

Şunlar arasındaki fark nedir? object [] [] tableOfObject = new object [10] [10]; ve object [,] tableOfObjects = yeni nesne [10,10]; Çok teşekkürler. – m3ntat

+3

Bir nesne [,] iki boyutlu bir dizidir, her zaman dikdörtgendir (tüm satırlar aynı uzunluktadır). Bir nesne [] [] pürüzlü bir dizidir; bir dizi nesne [] dizisi. Her satır kendi içinde bir dizi olduğu için, aynı uzunlukta olmaları gerekmez. – Guffa

+0

Ahh bu mantıklı. Teşekkürler Guffa. – m3ntat

-1

Yani, şey gibi: Ben gigabayt boyut diziler varsa

public static object[] GetRow() 
    { 
     object[,] test = new object[10,10]; 
     int a = 0; 
     object[] row = new object[10]; 
     for(a = 0; a <= 10; a++) 
     { 
      row[a] = test[0, a]; 
     } 
     return row; 
    } 
+0

Bu tam tersi; İki boyutlu bir diziden öğeleri tek boyutlu bir diziye alma. (Ayrıca, 10 uzunluğuna sahip bir dizi 0-10, 0-10 arası). – Guffa

+0

whoops, kötüyüm, aslında kodu çalıştırmadım, sadece hafızadan yapıyordum. –

1

, G/CLI işaretçiler ile oynayan ve sadece yerine gelen milyarlarca yavaş sınır-kontrol dizi indeksleme işlemleri sahip memcpy yapıyor C++ yapardı.

8

Diziniz value types dizisi ise, bu mümkündür.

int[,] twoD = new int[2, 2] { 
    {0,1}, 
    {2,3} 
}; 
int[] oneD = new int[2] 
    { 4, 5 }; 
int destRow = 1; 
Buffer.BlockCopy(
    oneD, // src 
    0, // srcOffset 
    twoD, // dst 
    destRow * twoD.GetLength(1) * sizeof(int), // dstOffset 
    oneD.Length * sizeof(int)); // count 
// twoD now equals 
// {0,1}, 
// {4,5} 

Nesnelerin bir dizisiyle mümkün değildir.

Not: .net3.5'ten beri bu yalnızca bir dizi temel öğe ile çalışacaktır.

İlgili konular