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.
我假设既然你使用的是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。