我想這樣做以下,但由於牛逼本質上只是一個System.Object的這是不行的。我知道T可以被一個接口約束,但這不是一個選項。有沒有一種技術來區分泛型類的類行爲?
public class Vborr<T> where T : struct
{
public Vborr()
{
public T Next()
{
if (typeof(T) == typeof(Double))
{
// do something for doubles
}
if (typeof(T) == typeof(Float))
{
// do something different for floats..
}
}
}
我經常發現缺少C#泛型。
謝謝!
Paul
爲什麼不工作?你想做什麼?我並不是說這是一個好主意,但是這個代碼應該像現在這樣編譯好(一旦你修正了錯別字)。 – LukeH 2010-10-15 15:35:31
你的問題在哪裏?你的ifs按類型區分行爲,所以你已經找到了解決方案。如果你轉換爲Float ...失敗,你可以嘗試(float)(object)x。但我不確定這個盒子是不是。 – CodesInChaos 2010-10-15 15:36:45
從你提供的2個案例中,聽起來像你正在尋找'where T:INumeric'或其他東西?我希望我們可以有這樣的功能,但我認爲這不會很快發生.. – Ani 2010-10-15 15:37:33