[英]Passing a generic List<> in C#
我腦子里死了; 我根據特定的類(c1,c2,c3 ......)定義了幾個List'。 我有一個方法來處理這些列表上的信息。 我想要做的是傳遞特定列表,但讓方法接受通用列表,然后通過typeof確定要執行的具體工作。 我知道它可能,但我似乎無法在方法方面獲得正確的語法。 所以,例如:
List<c1> c1var;
List<c2> c2var;
List<c3> c3var;
some_method(c1var);
some_method(c2var);
some_method(c3var);
class some_thing
some_method(List<> somevar)
if typeof(somevar).name = x then
esle if typeof(somevar).name = y then....
如何設置方法的參數列表?
謝謝R.桑德斯
您還需要聲明some_method
是通用的。
void SomeMethod<T>(List<T> someList)
{
if (typeof(T) == typeof(c1))
{
// etc
}
}
小心使用typeof(typ1)== typeof(typ2)。 這將測試以查看類型是否等同於忽略類型層次結構。
例如:
typeof(MemoryStream) == typeof(Stream); // evaluates to false
new MemoryStream() is Stream; //evalutes to true
檢查對象是否屬於某種類型的更好方法是使用'is'關鍵字。 一個例子如下:
public static void RunSnippet()
{
List<c1> m1 = new List<c1>();
List<c2> m2 = new List<c2>();
List<c3> m3 = new List<c3>();
MyMeth(m1);
MyMeth(m2);
MyMeth(m3);
}
public static void MyMeth<T>(List<T> a)
{
if (a is List<c1>)
{
WL("c1");
}
else if (a is List<c2>)
{
WL("c2");
}
else if (a is List<c3>)
{
WL("c3");
}
}
在參數部分放入List然后嘗試在代碼switch(typeof(T){case typeof(int): break;})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.