tôi cho rằng kể từ khi bạn đang sử dụng ArrayList, bạn đang sử dụng 1.1?
Trong trường hợp đó, tôi nghi ngờ những điều sau đây sẽ làm việc:
ArrayList list = new ArrayList();
MyStruct[] array = new MyStruct[list.Count];
list.CopyTo(array);
(chỉnh sửa - sử dụng ToArray của Bill là thuận tiện hơn - Tôi không biết về điều đó, nhưng sau đó, tôi rất hiếm khi [nếu bao giờ hết ] sử dụng ArrayList)
Tuy nhiên, nếu MyStruct thực sự là cấu trúc, thì tôi không thể nói đủ mạnh rằng cấu trúc có thể biến đổi là ý tưởng tồi - tức là bạn có thể đặt .Name và .Content sau khi tạo. Cấu trúc nên hầu như luôn luôn là bất biến. Trong thực tế, MyStruct của bạn trông giống như nó phải là một lớp học. Ngoài ra - tôi không "lên" trên VB, nhưng họ là những lĩnh vực công cộng? Một lần nữa - không được khuyến nghị - các thuộc tính sẽ thích hợp hơn. Tôi không biết về VB, nhưng C# 3.0 có một số cú pháp rất ngắn gọn cho việc này:
public class SomeType
{
public string Name {get;set;}
public string Content {get;set;}
}
Nếu bạn đang sử dụng 2.0 hoặc cao hơn, hãy xem xét Danh sách <T> thay vì ArrayList.
Nguồn
2008-10-09 16:59:58
Tôi không thể làm cho bạn - nhưng * xin vui lòng * lưu ý bao nhiêu MyStruct phải là một lớp, không phải là một cấu trúc. Điều này có xu hướng gây ra sự lộn xộn * rất nhiều, đặc biệt là đối với các loại có thể thay đổi (giống như của bạn). –
MyStruct có thể đã là một lớp, nhưng vì nó không có phương pháp, tôi cho rằng nó là nhanh hơn để chỉ sử dụng một cấu trúc ?! – Vincent
Không; đó không phải là sự khác biệt giữa các cấu trúc và các lớp. Structs có thể có các phương thức trong .NET; sự khác biệt là kiểu tham chiếu so với kiểu giá trị. –