我有一个类,它将泛型作为参数,如
public MyNewClass(string text, T myClass, int f, bool test = false)
编译器抱怨T myClass
。
我知道我可以通过"定义"类构造函数的泛型类(例如List
,Dictionary
等)并且已经看到这也可以在C#中完成,但无法找到对它的引用。
答案 0 :(得分:4)
当你声明你的类时,你应该声明泛型参数。
public class MyNewClass<T>
{
}
然后可以从任何类的方法访问此参数。当您创建MyNewClass
的实例时,您还应该定义T的类型,例如:
var instanceOfMyNewClass = new MyNewClass<className>(text, classIntance, f, true);
其中classInstance
是className
类型的对象的实例。
关于泛型的一个很好的介绍是here。
答案 1 :(得分:0)
我怀疑您遇到的问题是以下内容无法编译
public class Foo<T>
{
public Foo(string s, T t) { }
}
var foo = new Foo("Hello", new Something());
对此的修复是在构造函数中指定。
var foo = new Foo<Something>("Hello", new Something());
然而,这仍然有点奇怪,因为通常情况下,C#编译器可以推断出T
的类型。
这里的问题是C#编译器只允许在方法的第一个参数上推断泛型。所以允许以下IS。
public class Foo<T>
{
public Foo(T t, string s) { }
}
var foo = new Foo(new Something(), "Hello");