Is there any method for creating a dynamic array in C#?
-
1If you still stuck in the old mud, by using [] instead if List<>, you can use Array.Resize(). Here is a good example. dotnetperls.com/array-resizeGian– Gian2018-03-28 07:17:28 +00:00Commented Mar 28, 2018 at 7:17
-
The link dotnetperls.com/array-resize is not working. (FYI)Su Llewellyn– Su Llewellyn2018-08-13 15:34:59 +00:00Commented Aug 13, 2018 at 15:34
-
why not use the list?zahrakhani– zahrakhani2020-11-25 18:27:09 +00:00Commented Nov 25, 2020 at 18:27
9 Answers
Take a look at System.Collections.Generic.List<T>.
2 Comments
dynamic[] msdn.microsoft.com/en-GB/library/dd264736.aspx (array of dynamic types) or ExpandoObject msdn.microsoft.com/en-us/library/… I could -1 the answer for not mentioning theseExpanding on Chris and Migol`s answer with a code sample.
Using an array
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
Using a generic list. Under the hood the List<T> class uses an array for storage but does so in a fashion that allows it to grow effeciently.
List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
Comments
Sometimes plain arrays are preferred to Generic Lists, since they are more convenient (Better performance for costly computation -Numerical Algebra Applications for example, or for exchanging Data with Statistics software like R or Matlab)
In this case you may use the ToArray() method after initiating your List dynamically
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
Of course, this has sense only if the size of the array is never known nor fixed ex-ante. if you already know the size of your array at some point of the program it is better to initiate it as a fixed length array. (If you retrieve data from a ResultSet for example, you could count its size and initiate an array of that size, dynamically)
4 Comments
Use the array list which is actually implement array. It takes initially array of size 4 and when it gets full, a new array is created with its double size and the data of first array get copied into second array, now the new item is inserted into new array. Also the name of second array creates an alias of first so that it can be accessed by the same name as previous and the first array gets disposed
Comments
This answer seems to be the answer you are looking for Why can't I do this: dynamic x = new ExpandoObject { Foo = 12, Bar = "twelve" }
Read about the ExpandoObject here https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx
And the dynamic type here https://msdn.microsoft.com/en-GB/library/dd264736.aspx
Comments
Dynamic Array Example:
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();