Có phương pháp nào để tạo mảng động trong C # không?
Có phương pháp nào để tạo mảng động trong C # không?
Câu trả lời:
Hãy xem Danh sách Chung .
dynamic[]
msdn.microsoft.com/en-GB/library/dd264736.aspx (mảng các loại động) hoặc ExpandoObject
msdn.microsoft.com/ en-us / thư viện / ... tôi có thể -1 câu trả lời cho không nhắc đến những
Mở rộng câu trả lời của Chris và Migol với một mẫu mã.
Sử dụng một mảng
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
Sử dụng một danh sách chung. Về cơ bản, lớp List <T> sử dụng một mảng để lưu trữ nhưng làm như vậy theo cách cho phép nó phát triển hiệu quả.
List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
Đôi khi mảng đơn giản được ưu tiên hơn Danh sách chung, vì chúng thuận tiện hơn (Ví dụ: Hiệu suất tốt hơn cho việc tính toán tốn kém - Ứng dụng Đại số Số hoặc để trao đổi Dữ liệu với phần mềm Thống kê như R hoặc Matlab)
Trong trường hợp này, bạn có thể sử dụng phương thức ToArray () sau khi khởi tạo động Danh sách của bạn
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
Tất nhiên, điều này chỉ có ý nghĩa nếu kích thước của mảng không bao giờ được biết cũng như không cố định ex-ante . Nếu bạn đã biết kích thước mảng của mình tại một thời điểm nào đó của chương trình , tốt hơn nên bắt đầu nó như một mảng có độ dài cố định. (Ví dụ: nếu bạn truy xuất dữ liệu từ Tập kết quả, bạn có thể đếm kích thước của nó và khởi tạo một mảng có kích thước đó, theo cách động)
Ví dụ về mảng động:
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();
Sử dụng danh sách mảng thực sự là hiện thực mảng. Ban đầu nó có kích thước mảng 4 và khi nó đầy, một mảng mới được tạo với kích thước gấp đôi của nó và dữ liệu của mảng đầu tiên được sao chép vào mảng thứ hai, bây giờ mục mới được chèn vào mảng mới. Ngoài ra, tên của mảng thứ hai tạo ra một bí danh của mảng thứ nhất để nó có thể được truy cập bằng tên giống như trước đó và mảng đầu tiên được xử lý
Câu trả lời này dường như là câu trả lời mà bạn đang tìm kiếm Tại sao tôi không thể làm điều này: dynamic x = new ExpandoObject {Foo = 12, Bar = "mười hai"}
Đọc về https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspxExpandoObject
tại đây
Và dynamic
loại ở đây https://msdn.microsoft.com/en-GB/library/dd264736.aspx