如何将ArrayList转换为结构数组?

Vin*_*ent 5 .net c# vb.net arrays arraylist

我在这里:

Public Structure MyStruct
   Public Name as String
   Public Content as String
End Structure

Dim oStruct as MyStruct = New MyStruct()
oStruct.Name = ...
oStruct.Content = ...

Dim alList as ArrayList = new ArrayList()
alList.Add(oStruct)
Run Code Online (Sandbox Code Playgroud)

我想将ArrayList转换为类型为MyStruct的静态强类型数组.我怎样才能做到这一点?我对ToArray没有运气.

我正在使用.NET Framework 2.0.

Mar*_*ell 1

我假设既然你使用的是ArrayList,那么你使用的是1.1?

在这种情况下,我怀疑以下方法会起作用:

ArrayList list = new ArrayList();
MyStruct[] array = new MyStruct[list.Count];
list.CopyTo(array); 
Run Code Online (Sandbox Code Playgroud)

(编辑 - Bill 的 ToArray 使用更方便 - 我不知道那个,但是,我很少[如果有的话]使用 ArrayList)

但是,如果 MyStruct 确实是一个结构,那么我不能强烈地说可变结构是一个坏主意 - 即您可以在创建后设置 .Name 和 .Content。结构几乎应该总是不可变的。实际上,您的 MyStruct 看起来应该是一个类。另外 - 我对 VB 不太了解,但它们是公共领域吗?再次强调 - 不推荐 - 属性会更好。我不了解 VB,但 C# 3.0 有一些非常简洁的语法:

public class SomeType
{
    public string Name {get;set;}
    public string Content {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 2.0 或更高版本,请考虑使用 List<T> 而不是 ArrayList。