【发布时间】:2012-10-26 08:19:32
【问题描述】:
我有一个此类:
class A<TResult>
{
public TResult foo();
}
但有时我需要把这个类当作一个非泛型类来使用,即TResult的类型是void。
我无法通过以下方式实例化该类:
var a = new A<void>();
另外,我宁愿不指定省略尖括号的类型:
var a = new A();
我不想重写整个类,因为它做同样的事情。
【问题讨论】:
-
@Davio 是的,但这太可怕了......
-
在这种情况下,您必须在没有约束的情况下创建一个单独的类
A。但是没有 T 的类实现会是什么样子呢?你有一个T foo()方法。如果无效,T 应该是什么? -
如果你有需要,那就做一个非泛型等效类。
-
你可以通过
class A:A<object>{}隐藏恐怖 -
是的,它有效。我也在等待 Rafal 的回答,这样我就可以投票了。