C # 'da dinamik dizi oluşturmanın herhangi bir yöntemi var mı?
C # 'da dinamik dizi oluşturmanın herhangi bir yöntemi var mı?
Yanıtlar:
Genel Listelere bir göz atın .
dynamic[] msdn.microsoft.com/en-GB/library/dd264736.aspx (dinamik türler dizisi) veya ExpandoObject msdn.microsoft.com/ hakkında soru sorulabilir tr-us / library /… Bunlardan bahsetmediğim için cevabı -1 yapabilirdim
Chris ve Migol'un cevabını bir kod örneği ile genişletiyoruz.
Bir dizi kullanma
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
Genel bir liste kullanmak. Kaputun altında, List <T> sınıfı depolama için bir dizi kullanır, ancak bunu verimli bir şekilde büyümesine izin verecek şekilde yapar.
List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
Bazen düz diziler, daha uygun olduklarından Genel Listelere tercih edilir (örneğin, pahalı hesaplama için daha iyi performans - Sayısal Cebir Uygulamaları veya R veya Matlab gibi İstatistik yazılımlarıyla Veri alışverişi için)
Bu durumda Listenizi dinamik olarak başlattıktan sonra ToArray () yöntemini kullanabilirsiniz.
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
Elbette, bu yalnızca dizinin boyutu hiçbir zaman bilinmiyorsa veya önceden sabit değilse anlamlıdır . Dizinizin boyutunu programın bir noktasında zaten biliyorsanız, onu sabit uzunlukta bir dizi olarak başlatmak daha iyidir. (Örneğin bir ResultSet'ten veri alırsanız, boyutunu hesaplayabilir ve dinamik olarak bu boyutta bir dizi başlatabilirsiniz)
Dinamik Dizi Örneği:
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();
Aslında dizi gerçekleyen dizi listesini kullanın . Başlangıçta 4 boyutlu diziyi alır ve dolduğunda, çift boyutlu yeni bir dizi oluşturulur ve ilk dizinin verileri ikinci diziye kopyalanır, şimdi yeni öğe yeni diziye eklenir. Ayrıca, ikinci dizinin adı, öncekiyle aynı adla erişilebilmesi ve ilk dizinin elden çıkarılması için bir ilkinin takma adını oluşturur.
Bu cevap aradığınız cevap gibi görünüyor Neden bunu yapamıyorum: dynamic x = new ExpandoObject {Foo = 12, Bar = "on iki"}
ExpandoObjectBuradan https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx hakkında bilgi edinin
Ve buradaki dynamictür https://msdn.microsoft.com/en-GB/library/dd264736.aspx