2009-10-15 48 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的类型参数是双重值。因此,编译器会在调用之前通过确保整数文字转换为双精度的过程。