มีวิธีการสร้างอาร์เรย์แบบไดนามิกใน C # หรือไม่?
มีวิธีการสร้างอาร์เรย์แบบไดนามิกใน C # หรือไม่?
คำตอบ:
dynamic[] msdn.microsoft.com/en-GB/library/dd264736.aspx (อาร์เรย์ประเภทไดนามิก) หรือExpandoObject msdn.microsoft.com/ en-us / library / …ฉันสามารถ -1 คำตอบที่ไม่ได้กล่าวถึงสิ่งเหล่านี้
ขยายคำตอบของ Chris และ Migol ด้วยตัวอย่างโค้ด
การใช้อาร์เรย์
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
ใช้รายการทั่วไป ภายใต้ฝากระโปรงคลาส List <T> ใช้อาร์เรย์สำหรับจัดเก็บข้อมูล แต่ทำในรูปแบบที่ช่วยให้สามารถเติบโตได้อย่างมีประสิทธิภาพ
List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
บางครั้งอาร์เรย์ธรรมดาเป็นที่ต้องการสำหรับรายการทั่วไปเนื่องจากสะดวกกว่า (ประสิทธิภาพที่ดีกว่าสำหรับการคำนวณราคาแพง - แอปพลิเคชันพีชคณิตเชิงตัวเลขหรือสำหรับการแลกเปลี่ยนข้อมูลกับซอฟต์แวร์สถิติเช่น R หรือ Matlab)
ในกรณีนี้คุณอาจใช้วิธี ToArray () หลังจากเริ่มรายการของคุณแบบไดนามิก
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
ของหลักสูตรนี้มีความรู้สึก แต่ถ้าขนาดของอาร์เรย์จะไม่เคยรู้จักหรือถาวรอดีต ante หากคุณทราบขนาดของอาร์เรย์ของคุณในบางจุดของโปรแกรมแล้วจะเป็นการดีกว่าที่จะเริ่มต้นเป็นอาร์เรย์ที่มีความยาวคงที่ (หากคุณดึงข้อมูลจาก ResultSet เป็นต้นคุณสามารถนับขนาดและเริ่มต้นอาร์เรย์ขนาดนั้นแบบไดนามิก)
List<T>สำหรับการพิมพ์อย่างรุนแรงหรือArrayListหากคุณมี. NET 1.1 หรือชอบที่จะแคสต์ตัวแปร
ตัวอย่างอาร์เรย์แบบไดนามิก:
Console.WriteLine("Define Array Size? ");
int number = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter numbers:\n");
int[] arr = new int[number];
for (int i = 0; i < number; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < arr.Length; i++ )
{
Console.WriteLine("Array Index: "+i + " AND Array Item: " + arr[i].ToString());
}
Console.ReadKey();
คุณสามารถทำได้กับวัตถุไดนามิก:
var dynamicKeyValueArray = new[] { new {Key = "K1", Value = 10}, new {Key = "K2", Value = 5} };
foreach(var keyvalue in dynamicKeyValueArray)
{
Console.Log(keyvalue.Key);
Console.Log(keyvalue.Value);
}
ใช้รายการอาร์เรย์ซึ่งเป็นการนำอาร์เรย์ไปใช้จริง เริ่มแรกจะใช้อาร์เรย์ขนาด 4 และเมื่อเต็มอาร์เรย์ใหม่จะถูกสร้างขึ้นโดยมีขนาดสองเท่าและข้อมูลของอาร์เรย์แรกจะถูกคัดลอกไปยังอาร์เรย์ที่สองตอนนี้รายการใหม่จะถูกแทรกลงในอาร์เรย์ใหม่ นอกจากนี้ชื่อของอาร์เรย์ที่สองจะสร้างนามแฝงของชื่อแรกเพื่อให้สามารถเข้าถึงได้โดยใช้ชื่อเดียวกับก่อนหน้านี้และอาร์เรย์แรกจะถูกกำจัด
คุณสามารถใช้วัตถุอาร์เรย์จากคลาสคอลเลกชัน
using system.collections;
static void main()
{
Arrylist arr=new Arrylist();
}
คุณต้องการเพิ่มองค์ประกอบที่คุณสามารถใช้ได้
arr.add();
คำตอบนี้ดูเหมือนจะเป็นคำตอบที่คุณกำลังมองหา Why I can't do this: dynamic x = new ExpandoObject {Foo = 12, Bar = "twelve"}
อ่านเกี่ยวกับที่ExpandoObjectนี่https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx
และdynamicประเภทที่นี่https://msdn.microsoft.com/en-GB/library/dd264736.aspx