C # 'da bir dizinin boyutunu (uzunluk / öğe sayısı) nasıl belirleyebilirim?
C # 'da bir dizinin boyutunu (uzunluk / öğe sayısı) nasıl belirleyebilirim?
Yanıtlar:
Tek boyutlu bir diziyse a
,
a.Length
öğelerinin sayısını verecektir a
.
Eğer b
bir dikdörtgen, çok boyutlu bir dizi (örneğin, int[,] b = new int[3, 5];
)
b.Rank
boyutların sayısını (2) verecek ve
b.GetLength(dimensionIndex)
herhangi bir boyutun uzunluğunu alır (boyutlar için 0 tabanlı dizine ekleme - b.GetLength(0)
3 ve b.GetLength(1)
5 de öyledir ).
Daha fazla bilgi için System.Array belgelerine bakın .
@Lucero'nun yorumlarda belirttiği gibi, gerçekten tek boyutlu (tipik olarak tek boyutlu) dizilerden başka bir şey olmayan bir "sivri uçlu dizi" kavramı vardır.
Örneğin, aşağıdakiler olabilir:
int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};
c
Her birinin 3 üyesinin farklı uzunluklara sahip olduğuna dikkat edin . Bu durumda, daha önce olduğu gibi c.Length
elementlerin sayısını gösterir c
, (3) ve c[0].Length
, c[1].Length
ve c[2].Length
3, 2 ve 7, sırası ile olur.
int[][]
) ;-)
[,]
ve [][]
hala değer belirterek olabilir, böylece tüm .NET başlayanlar için açık olmak görünmüyor [][]
yanıtlarınız anlamda çok boyutlu dizi değil.
b.GetLength[0] is 3 and b.GetLength[1] is 5
olmalıdır b.GetLength(0) and b.GetLength(1)
.
Bu sorunun cevabını bulmak için Array belgelerine bakabilirsiniz .
Bu özel durumda, muhtemelen Uzunluk :
int sizeOfArray = array.Length;
Ama bu çok basit bir soru olduğundan ve şüphesiz bunun gibi daha pek çok soruya sahip olduğunuz için, size sadece cevabı söylemek yerine, cevabı nasıl bulacağınızı söylemeyi tercih ederim.
Visual Studio Intellisense
Bir değişkenin adını yazıp tuşuna bastığınızda, .
o nesnede bulunan tüm yöntemlerin, özelliklerin, olayların vb. Bir listesini gösterir. Bir üyeyi vurguladığınızda, size ne yaptığı hakkında kısa bir açıklama verir.
F1'e basın
İstediğinizi yapabilecek bir yöntem veya özellik bulursanız ancak emin değilseniz imleci üzerine getirip F1 tuşuna basarak yardım alabilirsiniz. Burada çok daha ayrıntılı bir açıklama ve ilgili bilgilere bağlantılar bulacaksınız.
Arama
Arama terimleri size of array in C#
, size sorunuzun cevabını ve çok daha fazlasını söyleyen birçok bağlantı verir. Bir programcının öğrenmesi gereken en önemli becerilerden biri bilgiyi nasıl bulacağıdır. Yanıtı kendiniz bulmak genellikle daha hızlıdır, özellikle de aynı soru daha önce sorulmuşsa.
Bir öğretici kullanın
C # öğrenmeye yeni başlıyorsanız, bir öğreticiyi takip etmeyi daha kolay bulacaksınız. MSDN'de C # öğreticilerini önerebilirim . Bir kitap istiyorsanız, Essential C # öneririm .
Yığın Taşması
Cevabı kendi başınıza bulamazsanız, lütfen soruyu Stack Overflow'da yayınlamaktan çekinmeyin. Ancak, cevabı önce kendiniz bulmak için çaba sarf ettiğinizi gösterirseniz minnettarız.
1 boyutlu dizi için
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
çok boyutlu dizi için
int length = listItems.Rank;
1 boyutun boyutunu elde etmek için
int length = listItems.GetLength(0);
Rank
Mülkiyet o boyutların sayısını döndürür öğe sayısını döndürmez.
Length
, Rank
, GetLength
)
yourArray.Length
:)
Tek bir boyut dizisi için şu Length
özelliği kullanırsınız :
int size = theArray.Length;
Birden çok boyut dizisi için Length
özellik, dizideki toplam öğe sayısını döndürür. GetLength
Boyutlardan birinin boyutunu elde etmek için yöntemi kullanabilirsiniz :
int size0 = theArray.GetLength(0);
şöyle olur: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
sonra bu diziyi kullanırken:
name[i]=new type[size_of_sec.Dim]
veya bir matris gibi bir şey beyan edebilirsiniz
type[ , ] name=new type [size1,size2]
Şimdiye kadar kaçırılan şey, aniden sinirlendiğim şeydi:
Dizi içindeki öğelerin miktarını nasıl bilebilirim? Mı .Length
eşit .Count
bir listesi?
Cevap şudur: new X[number]
Sizinle yaratılan X tipi bir diziye yerleştirilen X türü öğelerin miktarı kendiniz taşımak zorundasınız !
Örneğin. bir sayaç kullanarak: int countItemsInArray = 0
ve countItemsInArray++
dizinize yapılan her atama için.
(Yeni oluşturulan dizide new X[number]
, number
X tipi öğeler (referanslar) için önceden ayrılmış tüm alan vardır , ilk atamanız olarak içindeki herhangi bir yere atayabilirsiniz, örneğin (if number
= 100 ve değişken adı = a
) a[50] = new X();
.
C # 'nin yaratıldıktan sonra bir dizinin içindeki her bir yerin başlangıç değerini belirleyip belirtmediğini bilmiyorum, değilse veya karşılaştıramayacağınız başlangıç değeri (çünkü diziye sizin koyduğunuz bir değer olabilir), siz Başlayarak sıralı olarak atamazsanız 0
(bu durumda, countItemsInArray
atanacak olandan daha küçük tüm yerler) dizinin içindeki hangi yerleri zaten atadığınız izlemesi gerekir.
Sorunuz ise bir dizinin boyutu (öğelerin uzunluğu / sayı) olmasına göre / hala ikincisi "bölme" "alternatif" veya ayakta anlamına gelir ( "öğe sayısı" Ben sadece "olarak verdi örtülü olması gerekir yukarıdaki kodumdaki .Length
değerine karşılık gelen öğe miktarı "ve diğerleri verdi number
):
C # bir sizeof
operatöre sahiptir ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). Yerleşik türler için kullanımı güvenlidir (int gibi) (ve yalnızca türlerde çalışır (değişkenler değil)). Böylece, bayt cinsinden bir b
tür dizisinin boyutu int
olacaktır b.Length * sizeof(int)
.
(Yukarıda bahsedildiği gibi bir dizinin tüm alanı oluşturma sırasında tahsis edilmiş olduğundan ve sizeof
yalnızca türler üzerinde çalıştığından, hiçbir kod sizeof(variable)/sizeof(type)
çalışmaz veya izleme olmadan öğe miktarını vermez.)