将泛型传递给 class 构造函数列表

Passing generic into a class constructor list

我有一个 class 像这样将泛型作为参数

public MyNewClass(string text, T myClass, int f, bool test = false)

编译器抱怨 T myClass

我知道我可以将 "defined" 通用 classes 传递给 class 构造函数(例如 ListDictionary 等)并且已经看到这也可以在 C# 中完成,但找不到对它的引用。

当你声明你的class时,你应该声明泛型参数。

public class MyNewClass<T>
{


}

然后可以从 class 的任何方法访问此参数。当您将创建 MyNewClass 的实例时,您还应该定义 T 的类型,例如:

var instanceOfMyNewClass = new MyNewClass<className>(text, classIntance, f, true);

其中 classInstance 是类型 className 对象的实例。

关于泛型的一个很好的介绍是 here

我怀疑您遇到的问题是以下内容无法编译

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");