2014-05-14 124 views
1

我有特定的类,我想传入一个方法,我想在该方法中使用该类并返回该类的一个版本。传递一个类作为参数

protected Type [] Convert(ArrayList list, MyPersonalClass) 
{ 
    MyPersonalClass[] resArray = (MyPersonalClass[])list.ToArray(typeof(MyPersonalClass)); 
    return resArray; 
} 
+3

你想使用LINQ铸造。 http://msdn.microsoft.com/en-us/library/vstudio/bb341406(v=vs.100).aspx – cgTag

+0

1.您无法将'class'作为参数传递,您可以传递实例。 2.不要使用'ArrayList'代替'List '。 3.您的代码至少有两个原因无法编译。 –

+0

你看过通用方法吗? http://msdn.microsoft.com/en-us/library/twcad0zb.aspx –

回答

2

你想用Generics对于这一点,所以直接将你的例子:

public T[] Convert<T>(ArrayList list) 
{ 
    return (T[])list.ToArray(typeof(T)); 
} 

然后你可以使用它:

Convert<MyPersonalClass>(l); 

用做这种方式的问题没有办法保证ArrayList中的对象可以转换为MyPersonalClass

相反,你可能会更好用的MyPersonalClass一个通用的列表,然后你可以叫上ToArray()如果你需要一个数组:

List<MyPersonalClass> list = new List<MyPersonalClass>(); 
list.Add(new MyPersonalClass()); 

var arr = list.ToArray();