我刚刚开始挖掘C#是一个java用户。我遇到了一个问题,声明了一个通用的原始类型列表。考虑课程A<T>
和B : A<String>
,C : A<Int16>
。现在我想宣布像List<A> list
这样的东西。我在这种声明中面临一个问题,得到一个&#34; 泛型类型参数需要一个参数&#34;。我有什么方法可以做那样的事情吗?或者C#中还有其他一些模式可供使用?
答案 0 :(得分:2)
使用泛型类型时,必须指定type参数。在这种情况下,要声明List
A
,您必须指定T
。例如:
List<A<int>> list = new List<A<int>>();
或看作B
和C
都来自A
并明确指定T
,那么您可以拥有:
List<B> list = new List<B>();
List<C> list = new List<C>();
更新#1
在使用以下示例之前,我必须承认我没有给予太多 考虑使用
List
dynamic
会有多么有用/实用 是或者可能出现什么问题,但我想是的 提出建议。
public class A<T>
{
public T Value { get; set; }
}
List<A<dynamic>> list = new List<A<dynamic>>();
list.Add(new A<dynamic> { Value = "Hello World" });
list.Add(new A<dynamic> { Value = 100 });
foreach(A<dynamic> item in list)
{
Console.WriteLine(item.Value);
}