2014-05-14 28 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();