2009-10-15 74 views
1

鑑於下面的例子,有人可以告訴我如何調用它嗎?使用方法的調用方法<Type>(參數)

bool WithinDelta<T>(T input1, T input2, T delta) 

我用盡各種方法,例如

bool foo = GenericMath.WithinDelta(1, 50, 75); 
bool foo = GenericMath.WithinDelta<int>(1, 50, 75); 

但類型<T>是扔我。

對不起,基本的問題,但我生病的打我的頭在桌子上這個基本的東西。

回答

2

這兩個都應該可以正常工作。出了什麼問題?

第一種方法是使用類型推斷,根據參數找出最合適的T類型。它只能與通用方法而不是一般的類型的作品,並有各種限制 - 雖然它的功能更強大的C#3比C#2

+0

剛崩潰 無法加載文件或程序集「MiscUtil,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = d3c42c4bfacf7596」或其某個依賴關係。該系統找不到指定的文件。 – 2009-10-15 19:49:49

+1

所以這個調用是正確和正確的編譯,但代碼實際上無法運行。 你應該確保你的可執行文件能找到正確的程序集。 – 2009-10-15 19:51:38

+1

這與泛型沒有關係 - 您的項目中存在程序集版本不匹配或無效的程序集引用 – thecoop 2009-10-15 19:51:59

1

正如其他人所指出的兩種方式工作,並在此情況相同。

爲了給你舉個例子可與混亂的幫助,或可能使情況變得更糟,你還可以做以下

bool foo = GenericMath.WithinDelta<double>(1, 50, 75); 

在這種情況下,一般的參數將迫使WithinDelta的類型參數是雙重值。因此,編譯器會在調用之前通過確保整數文字轉換爲雙精度的過程。