簡體   English   中英

將泛型傳遞到類構造函數列表

[英]Passing generic into a class constructor list

我有一個類,將這樣的泛型作為參數

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

編譯器抱怨T myClass

我知道我可以將“定義的”泛型類傳遞給類構造函數(例如ListDictionary等),並且已經看到這也可以在C#中完成,但是找不到對它的引用。

聲明類時,應聲明通用參數。

public class MyNewClass<T>
{


}

然后可以從任何類的方法訪問此參數。 當創建MyNewClass的實例時,還應該定義T的類型,例如:

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

其中classInstanceclassName類型的對象的實例。

關於泛型一個很好的介紹是這里

我懷疑您面臨的問題是以下內容無法編譯

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM