[英]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.