ฉันจะกำหนดขนาดของอาร์เรย์ (ความยาว / จำนวนรายการ) ใน C # ได้อย่างไร
ฉันจะกำหนดขนาดของอาร์เรย์ (ความยาว / จำนวนรายการ) ใน C # ได้อย่างไร
คำตอบ:
ถ้าเป็นอาร์เรย์มิติa
เดียว
a.Length
a
จะทำให้จำนวนขององค์ประกอบของ
ถ้าb
เป็นอาร์เรย์หลายมิติรูปสี่เหลี่ยมผืนผ้า (ตัวอย่างเช่นint[,] b = new int[3, 5];
)
b.Rank
จะให้จำนวนมิติข้อมูล (2) และ
b.GetLength(dimensionIndex)
จะได้รับความยาวของมิติข้อมูลที่กำหนด (การสร้างดัชนีตาม 0 สำหรับมิติข้อมูล - ดังนั้นb.GetLength(0)
คือ 3 และb.GetLength(1)
5)
ดูเอกสาร System.Arrayสำหรับข้อมูลเพิ่มเติม
ดังที่ @Lucero ชี้ให้เห็นในความคิดเห็นมีแนวคิดเกี่ยวกับ "อาร์เรย์แบบหยัก" ซึ่งจริงๆแล้วไม่มีอะไรมากไปกว่าอาร์เรย์แบบมิติเดียวของอาร์เรย์ (โดยทั่วไปคือมิติเดียว)
ตัวอย่างเช่นอาจมีสิ่งต่อไปนี้:
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};
สังเกตว่าสมาชิกทั้ง 3 คนc
มีความยาวต่างกัน ในกรณีนี้เป็นก่อนที่c.Length
จะระบุจำนวนขององค์ประกอบของc
(3) และc[0].Length
, c[1].Length
และc[2].Length
จะเป็น 3, 2 และ 7 ตามลำดับ
int[][]
) ;-)
[,]
และ[][]
ดูเหมือนจะไม่ชัดเจนสำหรับมือใหม่. NET ทุกคนดังนั้นจึงควรสังเกตว่า[][]
ไม่ใช่อาร์เรย์หลายมิติในคำตอบของคุณ
b.GetLength[0] is 3 and b.GetLength[1] is 5
b.GetLength(0) and b.GetLength(1)
คุณสามารถดูเอกสารสำหรับ Arrayเพื่อหาคำตอบสำหรับคำถามนี้
ในกรณีนี้คุณอาจต้องการความยาว :
int sizeOfArray = array.Length;
แต่เนื่องจากนี่เป็นคำถามพื้นฐานและคุณไม่ต้องสงสัยเลยว่าจะมีคำถามแบบนี้อีกมากมายแทนที่จะบอกคำตอบกับคุณฉันควรจะบอกคุณว่าจะหาคำตอบได้อย่างไร
Visual Studio Intellisense
เมื่อคุณพิมพ์ชื่อของตัวแปรและกด.
แป้นจะแสดงรายการวิธีการคุณสมบัติเหตุการณ์และอื่น ๆ ทั้งหมดที่มีอยู่ในออบเจ็กต์นั้น เมื่อคุณไฮไลต์สมาชิกมันจะให้คำอธิบายสั้น ๆ ว่ามันทำอะไร
กด F1
หากคุณพบวิธีการหรือคุณสมบัติที่อาจทำในสิ่งที่คุณต้องการ แต่ไม่แน่ใจคุณสามารถเลื่อนเคอร์เซอร์ไปไว้บนนั้นแล้วกด F1 เพื่อรับความช่วยเหลือ ที่นี่คุณจะได้รับคำอธิบายโดยละเอียดพร้อมลิงก์ไปยังข้อมูลที่เกี่ยวข้อง
ค้นหา
ข้อความค้นหาsize of array in C#
มีลิงก์มากมายที่บอกคำตอบสำหรับคำถามของคุณและอื่น ๆ อีกมากมาย ทักษะที่สำคัญที่สุดอย่างหนึ่งที่โปรแกรมเมอร์ต้องเรียนรู้คือวิธีการค้นหาข้อมูล มักจะเร็วกว่าในการค้นหาคำตอบด้วยตัวเองโดยเฉพาะอย่างยิ่งหากมีการถามคำถามเดียวกันมาก่อน
ใช้บทช่วยสอน
หากคุณเพิ่งเริ่มเรียนรู้ C # คุณจะทำตามบทช่วยสอนได้ง่ายขึ้น ฉันสามารถแนะนำแบบฝึกหัด C #บน MSDN ได้ หากคุณต้องการหนังสือที่ผมอยากแนะนำEssential C #
Stack Overflow
หากคุณไม่สามารถหาคำตอบได้ด้วยตนเองโปรดโพสต์คำถามใน Stack Overflow แต่เราจะขอบคุณหากคุณแสดงให้เห็นว่าคุณได้ใช้ความพยายามในการค้นหาคำตอบด้วยตัวเองก่อน
สำหรับอาร์เรย์ 1 มิติ
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
สำหรับอาร์เรย์หลายมิติ
int length = listItems.Rank;
เพื่อให้ได้ขนาด 1 มิติ
int length = listItems.GetLength(0);
Rank
คุณสมบัติไม่กลับจำนวนรายการที่จะส่งกลับจำนวนมิติ
Length
, Rank
, GetLength
)
yourArray.Length
:)
กับLength
ทรัพย์สิน.
int[] foo = new int[10];
int n = foo.Length; // n == 10
สำหรับอาร์เรย์มิติเดียวคุณใช้Length
คุณสมบัติ:
int size = theArray.Length;
สำหรับอาร์เรย์หลายมิติLength
คุณสมบัติจะส่งกลับจำนวนรายการทั้งหมดในอาร์เรย์ คุณสามารถใช้GetLength
วิธีการรับขนาดของมิติใดมิติหนึ่ง:
int size0 = theArray.GetLength(0);
ในกรณีทั่วไปส่วนใหญ่จะใช้ "Length" และ "Count"
อาร์เรย์:
int[] myArray = new int[size];
int noOfElements = myArray.Length;
อาร์เรย์รายการที่พิมพ์:
List <int> myArray = new List<int>();
int noOfElements = myArray.Count;
มันจะเป็นแบบนี้: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2 มิติ:
type[][]name=new type[size][] //second brackets are emtpy
จากนั้นเมื่อคุณใช้อาร์เรย์นี้:
name[i]=new type[size_of_sec.Dim]
หรือคุณสามารถประกาศบางอย่างเช่นเมทริกซ์
type[ , ] name=new type [size1,size2]
สิ่งที่พลาดไปคือสิ่งที่ฉันรู้สึกหงุดหงิดในทันใด:
ฉันจะทราบจำนวนรายการภายในอาร์เรย์ได้อย่างไร คือ.Length
เท่ากับ.Count
ของรายการได้หรือไม่
คำตอบคือ: ปริมาณของรายการประเภท X ที่ได้รับการใส่ลงไปในอาร์เรย์ของ X ชนิดที่สร้างขึ้นด้วยการnew X[number]
ที่คุณจะต้องดำเนินการด้วยตัวเอง !
เช่น. โดยใช้ตัวนับ: int countItemsInArray = 0
และcountItemsInArray++
สำหรับทุกการกำหนดอาร์เรย์ของคุณ
(อาร์เรย์เพียงแค่สร้างขึ้นด้วยnew X[number]
มีพื้นที่ทั้งหมดของnumber
รายการ (อ้างอิง) ประเภท X จัดสรรแล้วคุณสามารถกำหนดให้ภายในสถานที่ใด ๆ ในฐานะที่ได้รับมอบหมายเป็นครั้งแรกของคุณตัวอย่างเช่น (ถ้าnumber
= 100 และชื่อตัวแปร = )a
a[50] = new X();
ฉันไม่รู้ว่า C # ระบุค่าเริ่มต้นของแต่ละสถานที่ภายในอาร์เรย์เมื่อสร้างหรือไม่หากไม่ใช่หรือค่าเริ่มต้นที่คุณไม่สามารถเปรียบเทียบได้ (เพราะอาจเป็นค่าที่คุณใส่ไว้ในอาร์เรย์) คุณ จะต้องติดตามว่าสถานที่ใดในอาร์เรย์ที่คุณกำหนดไว้แล้วด้วยหากคุณไม่ได้กำหนดตามลำดับโดยเริ่มจาก0
(ซึ่งในกรณีนี้สถานที่ทั้งหมดที่มีขนาดเล็กกว่าที่countItemsInArray
จะกำหนดให้)
ในขนาดคำถามของคุณของอาร์เรย์ (ความยาว / จำนวนรายการ)ขึ้นอยู่กับว่า/หมายถึงการยืนสำหรับ "ทางเลือก" หรือ "หารด้วย" หลังยังคงต้องครอบคลุม ("จำนวนรายการ" ที่ฉันให้เป็น " จำนวนรายการ "และอื่น ๆ ให้.Length
ซึ่งสอดคล้องกับมูลค่าnumber
ในรหัสของฉันด้านบน):
C # มีตัวsizeof
ดำเนินการ ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ) ปลอดภัยที่จะใช้สำหรับประเภทบิวท์อิน (เช่น int) (และทำงานเฉพาะกับประเภท (ไม่ใช่ตัวแปร)) ดังนั้นขนาดของอาร์เรย์b
ชนิดไบต์จะเป็นint
b.Length * sizeof(int)
(เนื่องจากพื้นที่ทั้งหมดของอาร์เรย์ได้รับการจัดสรรในการสร้างแล้วดังที่กล่าวไว้ข้างต้นและsizeof
ทำงานเฉพาะกับประเภทเท่านั้นจึงไม่มีรหัสใดที่ต้องการsizeof(variable)/sizeof(type)
ทำงานหรือให้จำนวนรายการที่ไม่มีการติดตาม)