[英]Passing generic into a class constructor list
我有一个类,将这样的泛型作为参数
public MyNewClass(string text, T myClass, int f, bool test = false)
编译器抱怨T myClass
。
我知道我可以将“定义的”泛型类传递给类构造函数(例如List
, Dictionary
等),并且已经看到这也可以在C#中完成,但是找不到对它的引用。
声明类时,应声明通用参数。
public class MyNewClass<T>
{
}
然后可以从任何类的方法访问此参数。 当创建MyNewClass
的实例时,还应该定义T的类型,例如:
var instanceOfMyNewClass = new MyNewClass<className>(text, classIntance, f, true);
其中classInstance
是className
类型的对象的实例。
关于泛型一个很好的介绍是这里 。
我怀疑您面临的问题是以下内容无法编译
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#编译器仅允许在方法的第一个参数上推断泛型。 因此允许以下。
public class Foo<T>
{
public Foo(T t, string s) { }
}
var foo = new Foo(new Something(), "Hello");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.