@Marcelo: ... tapi masih tidak bisa menjawab pertanyaan yang sangat sederhana seperti "Di mana kacamata saya". ;)
Guffa
2
Apa yang Anda maksud dengan "ukuran"? Jumlah elemen atau ukuran dalam byte?
Fredrik Mörk
2
@fearofawhackplanet Saya memberikan suara positif karena saya memiliki masalah yang sama dalam menemukan Panjang tidak berfungsi untuk array multi-dimensi dan sebagai hasil dari pertanyaan ini menemukan Peringkat dan GetLength (indeks).
TheMathemagician
1
@fearofawhackplanet Saya percaya fakta bahwa ia memiliki 145.000 tampilan adalah bukti relevansinya. Suara positif.
brycejl
Jawaban:
152
Jika itu larik satu dimensi a,
a.Length
akan memberikan jumlah elemen a.
Jika badalah larik multi-dimensi persegi panjang (misalnya, int[,] b = new int[3, 5];)
b.Rank
akan memberikan jumlah dimensi (2) dan
b.GetLength(dimensionIndex)
akan mendapatkan panjang dimensi tertentu (pengindeksan berbasis 0 untuk dimensi - begitu b.GetLength(0)juga 3 dan b.GetLength(1)5).
Seperti yang @Lucero tunjukkan di komentar, ada konsep "larik bergerigi", yang sebenarnya tidak lebih dari larik dimensi tunggal (biasanya satu dimensi).
Misalnya, seseorang dapat memiliki yang berikut ini:
int[][] c =newint[3][];
c[0]=newint[]{1,2,3};
c[1]=newint[]{3,14};
c[2]=newint[]{1,1,2,3,5,8,13};
Perhatikan bahwa 3 anggota csemuanya memiliki panjang yang berbeda. Dalam hal ini, seperti sebelumnya c.Lengthakan menunjukkan jumlah elemen c, (3) dan c[0].Length, c[1].Lengthdan c[2].Lengthakan 3, 2, dan 7, masing-masing.
Untuk kelengkapan Anda juga bisa membuat daftar cara kerja array bergerigi (misalnya int[][]) ;-)
Lucero
Saya menganggapnya, @Lucerno, tetapi menganggapnya masalah yang berbeda - mencari tahu ukuran benda di dalam array - array bergerigi benar-benar hanya array berdimensi tunggal yang kebetulan berisi array berdimensi tunggal, karena saya yakin Anda tahu .
Blair Conrad
3
tentu saja saya tahu bahwa Anda benar dan itulah mengapa saya menambahkan komentar dengan senyuman alih-alih menulis jawaban sendiri. Namun, perbedaan antara [,]dan [][]tampaknya tidak jelas untuk semua pemula NET., Jadi mungkin masih perlu dicatat bahwa [][]itu bukan array multidimensi dalam pengertian jawaban Anda.
Lucero
2
Jawaban yang bagus. Tapi, Anda mungkin ingin mengubah b.GetLength[0] is 3 and b.GetLength[1] is 5harus b.GetLength(0) and b.GetLength(1).
Droogans
29
Anda dapat melihat dokumentasi Array untuk mengetahui jawaban dari pertanyaan ini.
Dalam kasus khusus ini Anda mungkin membutuhkan Panjang :
int sizeOfArray =array.Length;
Tetapi karena ini adalah pertanyaan mendasar dan Anda pasti memiliki lebih banyak pertanyaan seperti ini, daripada hanya memberi tahu Anda jawabannya, saya lebih suka memberi tahu Anda bagaimana menemukan jawabannya sendiri.
Visual Studio Intellisense
Saat Anda mengetik nama variabel dan menekan .tombolnya, Anda akan melihat daftar semua metode, properti, peristiwa, dll. Yang tersedia di objek itu. Saat Anda menyorot seorang anggota, itu memberi Anda deskripsi singkat tentang apa yang dilakukannya.
Tekan F1
Jika Anda menemukan metode atau properti yang mungkin melakukan apa yang Anda inginkan tetapi Anda tidak yakin, Anda dapat memindahkan kursor ke atasnya dan menekan F1 untuk mendapatkan bantuan. Di sini Anda mendapatkan deskripsi yang jauh lebih rinci ditambah tautan ke informasi terkait.
Cari
Istilah penelusuran size of array in C#memberikan banyak tautan yang memberi tahu Anda jawaban atas pertanyaan Anda dan banyak lagi. Salah satu keterampilan terpenting yang harus dipelajari seorang programmer adalah bagaimana menemukan informasi. Seringkali lebih cepat untuk menemukan jawabannya sendiri, terutama jika pertanyaan yang sama telah ditanyakan sebelumnya.
Gunakan tutorial
Jika Anda baru mulai mempelajari C #, Anda akan lebih mudah mengikuti tutorial. Saya dapat merekomendasikan tutorial C # di MSDN. Jika Anda menginginkan sebuah buku, saya merekomendasikan Essential C # .
Stack Overflow
Jika Anda tidak dapat menemukan jawabannya sendiri, silakan posting pertanyaan di Stack Overflow. Tetapi kami menghargai jika Anda menunjukkan bahwa Anda telah berusaha untuk menemukan jawabannya sendiri terlebih dahulu.
@Nayan: Terima kasih! Meskipun OP mendapatkan jawabannya dengan cepat dari poster lain sangat bagus, saya merasa lebih penting untuk mengajari pemula cara menemukan informasi daripada mengajari mereka jawaban atas pertanyaan tertentu. Saya berharap OP menemukan jawaban ini berguna dan mereka tidak perlu mengajukan ratusan pertanyaan yang bisa mereka temukan jawabannya sendiri.
Mark Byers
12
+1 untuk meluangkan waktu untuk melakukan pendekatan ini - "beri seseorang ikan ..." dll.
Peter Kelly
Jika saya harus melakukan hal yang sama, saya akan mengarahkan OP ke jawaban Anda di sini =) Dan ya, saya sepenuhnya setuju dengan Anda!
Nayan
1
Ini bagus tapi saya merasa ini harus ditautkan secara otomatis. Tidak bisakah mereka memulai halaman "jawaban yang layak dilihat"? Satu hal yang akan saya tambahkan adalah bahwa seseorang harus memeriksa stack overflow itu sendiri sebelum memposting pertanyaan. Seringkali saya baru mulai memposting pertanyaan dan kemudian melihat pertanyaan terkait yang muncul. Saya tidak yakin apakah jawabannya ada di tempat lain di internet jika bukan di sini juga.
Untuk array dimensi tunggal, Anda menggunakan Lengthproperti:
int size = theArray.Length;
Untuk beberapa array dimensi, Lengthproperti mengembalikan jumlah item dalam array. Anda dapat menggunakan GetLengthmetode ini untuk mendapatkan ukuran salah satu dimensi:
Apa yang terlewatkan sejauh ini adalah apa yang tiba-tiba membuat saya kesal:
Bagaimana cara mengetahui jumlah item di dalam array? Apakah .Lengthsama .Countdengan Daftar?
Jawabannya adalah: jumlah item tipe X yang telah dimasukkan ke dalam array tipe X yang dibuat dengan new X[number]Anda harus membawanya sendiri !
Misalnya. menggunakan penghitung: int countItemsInArray = 0dan countItemsInArray++untuk setiap tugas ke array Anda.
(Array yang baru saja dibuat new X[number]memiliki semua ruang untuk numberitem (referensi) tipe X sudah dialokasikan, Anda dapat menetapkan ke tempat mana pun di dalamnya sebagai tugas pertama Anda, misalnya (if number= 100 dan nama variabel = a) a[50] = new X();.
Saya tidak tahu apakah C # menentukan nilai awal dari setiap tempat di dalam array saat dibuat, jika tidak atau nilai awal yang tidak dapat Anda bandingkan (karena itu mungkin nilai yang Anda sendiri telah masukkan ke dalam array), Anda harus melacak tempat mana di dalam larik yang sudah Anda tetapkan juga jika Anda tidak menetapkan secara berurutan mulai dari 0(dalam hal ini semua tempat yang lebih kecil daricountItemsInArray akan ditetapkan).)
Dalam pertanyaan Anda, ukuran larik (panjang / jumlah item) tergantung pada apakah / dimaksudkan untuk mewakili "alternatif" atau "bagi dengan" yang terakhir masih harus dicakup ("jumlah item" yang baru saja saya berikan sebagai " jumlah item "dan lainnya yang diberikan .Lengthsesuai dengan nilainumber dalam kode saya di atas):
(Karena semua ruang larik telah dialokasikan saat pembuatan, seperti yang disebutkan di atas, dan sizeofhanya bekerja pada jenis, tidak ada kode yang sizeof(variable)/sizeof(type)berfungsi atau menghasilkan jumlah item tanpa pelacakan.)
Jawaban:
Jika itu larik satu dimensi
a
,akan memberikan jumlah elemen
a
.Jika
b
adalah larik multi-dimensi persegi panjang (misalnya,int[,] b = new int[3, 5];
)akan memberikan jumlah dimensi (2) dan
akan mendapatkan panjang dimensi tertentu (pengindeksan berbasis 0 untuk dimensi - begitu
b.GetLength(0)
juga 3 danb.GetLength(1)
5).Lihat dokumentasi System.Array untuk info lebih lanjut.
Seperti yang @Lucero tunjukkan di komentar, ada konsep "larik bergerigi", yang sebenarnya tidak lebih dari larik dimensi tunggal (biasanya satu dimensi).
Misalnya, seseorang dapat memiliki yang berikut ini:
Perhatikan bahwa 3 anggota
c
semuanya memiliki panjang yang berbeda. Dalam hal ini, seperti sebelumnyac.Length
akan menunjukkan jumlah elemenc
, (3) danc[0].Length
,c[1].Length
danc[2].Length
akan 3, 2, dan 7, masing-masing.sumber
int[][]
) ;-)[,]
dan[][]
tampaknya tidak jelas untuk semua pemula NET., Jadi mungkin masih perlu dicatat bahwa[][]
itu bukan array multidimensi dalam pengertian jawaban Anda.b.GetLength[0] is 3 and b.GetLength[1] is 5
harusb.GetLength(0) and b.GetLength(1)
.Anda dapat melihat dokumentasi Array untuk mengetahui jawaban dari pertanyaan ini.
Dalam kasus khusus ini Anda mungkin membutuhkan Panjang :
Tetapi karena ini adalah pertanyaan mendasar dan Anda pasti memiliki lebih banyak pertanyaan seperti ini, daripada hanya memberi tahu Anda jawabannya, saya lebih suka memberi tahu Anda bagaimana menemukan jawabannya sendiri.
Visual Studio Intellisense
Saat Anda mengetik nama variabel dan menekan
.
tombolnya, Anda akan melihat daftar semua metode, properti, peristiwa, dll. Yang tersedia di objek itu. Saat Anda menyorot seorang anggota, itu memberi Anda deskripsi singkat tentang apa yang dilakukannya.Tekan F1
Jika Anda menemukan metode atau properti yang mungkin melakukan apa yang Anda inginkan tetapi Anda tidak yakin, Anda dapat memindahkan kursor ke atasnya dan menekan F1 untuk mendapatkan bantuan. Di sini Anda mendapatkan deskripsi yang jauh lebih rinci ditambah tautan ke informasi terkait.
Cari
Istilah penelusuran
size of array in C#
memberikan banyak tautan yang memberi tahu Anda jawaban atas pertanyaan Anda dan banyak lagi. Salah satu keterampilan terpenting yang harus dipelajari seorang programmer adalah bagaimana menemukan informasi. Seringkali lebih cepat untuk menemukan jawabannya sendiri, terutama jika pertanyaan yang sama telah ditanyakan sebelumnya.Gunakan tutorial
Jika Anda baru mulai mempelajari C #, Anda akan lebih mudah mengikuti tutorial. Saya dapat merekomendasikan tutorial C # di MSDN. Jika Anda menginginkan sebuah buku, saya merekomendasikan Essential C # .
Stack Overflow
Jika Anda tidak dapat menemukan jawabannya sendiri, silakan posting pertanyaan di Stack Overflow. Tetapi kami menghargai jika Anda menunjukkan bahwa Anda telah berusaha untuk menemukan jawabannya sendiri terlebih dahulu.
sumber
untuk larik 1 dimensi
untuk array multidimensi
Untuk mendapatkan ukuran 1 dimensi
sumber
Rank
properti tidak kembali jumlah item, ia mengembalikan jumlah dimensi.Length
,Rank
,GetLength
)yourArray.Length
:)sumber
Dengan
Length
properti.sumber
Untuk array dimensi tunggal, Anda menggunakan
Length
properti:Untuk beberapa array dimensi,
Length
properti mengembalikan jumlah item dalam array. Anda dapat menggunakanGetLength
metode ini untuk mendapatkan ukuran salah satu dimensi:sumber
Dalam kebanyakan kasus umum, 'Panjang' dan 'Hitungan' digunakan.
Himpunan:
Array Daftar yang Diketik:
sumber
bunyinya seperti ini: 1D:
2D:
lalu saat Anda menggunakan larik ini:
atau Anda dapat mendeklarasikan sesuatu seperti matriks
sumber
Apa yang terlewatkan sejauh ini adalah apa yang tiba-tiba membuat saya kesal:
Bagaimana cara mengetahui jumlah item di dalam array? Apakah
.Length
sama.Count
dengan Daftar?Jawabannya adalah: jumlah item tipe X yang telah dimasukkan ke dalam array tipe X yang dibuat dengan
new X[number]
Anda harus membawanya sendiri !Misalnya. menggunakan penghitung:
int countItemsInArray = 0
dancountItemsInArray++
untuk setiap tugas ke array Anda.(Array yang baru saja dibuat
new X[number]
memiliki semua ruang untuknumber
item (referensi) tipe X sudah dialokasikan, Anda dapat menetapkan ke tempat mana pun di dalamnya sebagai tugas pertama Anda, misalnya (ifnumber
= 100 dan nama variabel =a
)a[50] = new X();
.Saya tidak tahu apakah C # menentukan nilai awal dari setiap tempat di dalam array saat dibuat, jika tidak atau nilai awal yang tidak dapat Anda bandingkan (karena itu mungkin nilai yang Anda sendiri telah masukkan ke dalam array), Anda harus melacak tempat mana di dalam larik yang sudah Anda tetapkan juga jika Anda tidak menetapkan secara berurutan mulai dari
0
(dalam hal ini semua tempat yang lebih kecil daricountItemsInArray
akan ditetapkan).)Dalam pertanyaan Anda, ukuran larik (panjang / jumlah item) tergantung pada apakah / dimaksudkan untuk mewakili "alternatif" atau "bagi dengan" yang terakhir masih harus dicakup ("jumlah item" yang baru saja saya berikan sebagai " jumlah item "dan lainnya yang diberikan
.Length
sesuai dengan nilainumber
dalam kode saya di atas):C # memiliki
sizeof
operator ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). Aman digunakan untuk tipe bawaan (seperti int) (dan hanya beroperasi pada tipe (bukan variabel)). Dengan demikian ukuran arrayb
tipeint
dalam byte akan menjadib.Length * sizeof(int)
.(Karena semua ruang larik telah dialokasikan saat pembuatan, seperti yang disebutkan di atas, dan
sizeof
hanya bekerja pada jenis, tidak ada kode yangsizeof(variable)/sizeof(type)
berfungsi atau menghasilkan jumlah item tanpa pelacakan.)sumber