我想能夠在C#2.0聲明函數作爲採取任何類型的值的數組作爲正式參數
void foo(<any value type>[] data){}
。如果我聲明爲
void foo(ValueType[] data){}
它編譯,但隨後就好像它們是從object
導出數據[]的元素被處理,例如我不能說像
fixed (void* pData = data){}
我想避免服用無效*作爲參數 - 我只是希望能夠接受任何值類型的數組,然後做非託管的東西出來。
ETA:此外,這有同樣的問題:
public static unsafe void foo<T>(T[] data) where T:struct{
fixed(void *p = data){}
}
的情況下,你不知道。修復失敗,因爲它被視爲託管類型--CS0208,無法聲明指向託管類型的指針。請參閱下面的「mm」。我認爲他是對的......這可能是無法完成的。
大聲笑 - '做非託管的事情' - 這聽起來很猥褻;-) – 2009-02-18 15:58:52