Art*_*m G 4 c# generics int reference class
我想创建一个通用堆栈
我有一个Node类
public class GenericNode<T> where T : class
{
public T item;
public GenericNode<T> next;
public GenericNode()
{
}
public GenericNode(T item)
{
this.item = item;
}
}
Run Code Online (Sandbox Code Playgroud)
并且可以使用它
GenericNode<string> node = new GenericNode<string>("one")
Run Code Online (Sandbox Code Playgroud)
但我不能用它也喜欢
GenericNode<int> node = new GenericNode<int>(1)
Run Code Online (Sandbox Code Playgroud)
因为int不是引用类型(不是类)而我使用的地方是T:class但是List也不是引用类型.
我该如何解决我的问题?
使用struct约束(或class取决于您查看的问题的版本)意味着类型for T不能为空,并在您尝试使用时抛出异常<string>.
删除它将允许您执行所需的步骤.
public class GenericNode<T> where T : IConvertible
{
public T item;
public GenericNode<T> next;
public GenericNode()
{
}
public GenericNode(T item)
{
this.item = item;
}
}
void Main()
{
GenericNode<string> node = new GenericNode<string>("one");
GenericNode<int> node2 = new GenericNode<int>(1);
}
Run Code Online (Sandbox Code Playgroud)
删除class约束:
public class GenericNode<T> /* where T : class*/
Run Code Online (Sandbox Code Playgroud)
如果省略该约束,它将允许您的类使用任何类型,无论它是值还是引用类型.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |