我最近做了很多List<SomeType>- > SomeType[]转换,尤其是当我过滤或扩展数组时.
例如过滤:
// filter the list
var memberList = new List<MemberType>();
foreach (var member in members)
{
if (member.someProperty != sentinalValue)
{
memberList.Add(member);
}
}
// overwrite the old array with a new on dimensioned correctly
members = new MemberType[memberList.Count];
memberList.CopyTo(members);
Run Code Online (Sandbox Code Playgroud)
或延伸:
// create the new member
var newMember = new MemeberType();
// create a new array to hold the extended members
newMembers = new MemberType[members.Length + 1];
// copy over the old members
members.CopyTo(newMembers, 0);
// add the new member
newMembers[members.Length] = newMember;
// overwrite old array with new array containing new member
members = newMembers;
Run Code Online (Sandbox Code Playgroud)
由于我们使用的XML序列化类,我必须使用数组(MemberType [])而不是一个很好的泛型集合.我有信心有一种更好的方式来做这种简单的事情,所以如果你知道一个(这不会增加不必要的复杂性)让我知道.
有一些扩展方法可以完全按照您的描述进行操作:
var membersList = members.ToArray();
Run Code Online (Sandbox Code Playgroud)