Çok boyutlu bir dizi ve C dizi dizisi arasındaki farklar ne#?
Çok boyutlu diziler double[,]
ve dizi-of-diziler double[][]
C arasındaki farklar nelerdir#?
Eğer bir fark varsa, her biri için en iyi ne şekilde kullanılır?
CEVAP
Diziler (diziler tırtıklı) dizisi daha hızlı, çok boyutlu diziler ve daha etkili bir şekilde kullanılabilir. Çok boyutlu diziler daha güzel sözdizimi vardır.
Eğer yazdığınız bazı basit kod kullanarak pürüzlü ve çok boyutlu diziler ve daha sonra incelemek derlenmiş Meclisi ile IL çözücü göreceksiniz ki, depolama ve alma pürüzlü (veya tek boyutlu) diziler basit IL talimatları verirken, aynı işlemler için çok boyutlu diziler yöntem çağırmaları olan her zaman daha yavaş.
Aşağıdaki yöntemleri deneyin:
static void SetElementAt(int[][] array, int i, int j, int value)
{
array[i][j] = value;
}
static void SetElementAt(int[,] array, int i, int j, int value)
{
array[i, j] = value;
}
IL kendi şunlar olacaktır:
.method private hidebysig static void SetElementAt(int32[][] 'array',
int32 i,
int32 j,
int32 'value') cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: ldelem.ref
IL_0003: ldarg.2
IL_0004: ldarg.3
IL_0005: stelem.i4
IL_0006: ret
} // end of method Program::SetElementAt
.method private hidebysig static void SetElementAt(int32[0...,0...] 'array',
int32 i,
int32 j,
int32 'value') cil managed
{
// Code size 10 (0xa)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: ldarg.2
IL_0003: ldarg.3
IL_0004: call instance void int32[0...,0...]::Set(int32,
int32,
int32)
IL_0009: ret
} // end of method Program::SetElementAt
Tırtıklı dizileri kullanarak kolayca takas ve satır satır yeniden boyutlandırma gibi işlemleri gerçekleştirebilirsiniz. Belki bazı durumlarda çok boyutlu dizi kullanımı daha güvenli olacaktır, ancak bu bile Microsoft FxCop pürüzlü diziler projeleri analiz etmek için kullandığınızda çok boyutlu yerine kullanılması gerektiğini söyler.
'dizi arasındaki fark ne ve dize?...
2 boyutlu bir dizi tepe algılama...
Nasıl JavaScript iki boyutlu bir dizi ...
Nasıl Ruby başka bir dizi için bir diz...
Nasıl python iki boyutlu bir dizi tanı...