关于c#中泛型的问题和default关键字,谢谢!
如图所示,是不是泛型类型的属性不能直接赋值为null。这个default(T)是什么意思,这个default是个方法或者函数吗(有括号,T为形参,null为返回值)?de...
如图所示,是不是泛型类型的属性不能直接赋值为null。
这个default(T)是什么意思,这个default是个方法或者函数吗(有括号,T为形参,null为返回值)?default关键字还有什么其它用法吗?
最后,问一下关于属性/字段,比如public int A=1。直接这么赋值的话,是不是默认个语句定义的A是字段而不是属性。包括图中的elem和nextNode都是字段类型吗?
谢谢 展开
这个default(T)是什么意思,这个default是个方法或者函数吗(有括号,T为形参,null为返回值)?default关键字还有什么其它用法吗?
最后,问一下关于属性/字段,比如public int A=1。直接这么赋值的话,是不是默认个语句定义的A是字段而不是属性。包括图中的elem和nextNode都是字段类型吗?
谢谢 展开
1个回答
展开全部
default(T)是指把调用T类型的默认构造函数对其进行初始化,
如,int a=default(int);则a=0;如果T类型是引用类型的话,则初始化为null
你程序中出现的问题是,
泛型中的T仅仅是个占位符,在程序JIT编译的时候,根据你传入的实参类型进行填充
所以,假如你在调用的时候,T的类型是个值类型的话,像你这样直接赋值null显然就会出错
可以给泛型假如约束保证其正常运行
class StackNode<T> where T:class
{
//...
}
这样你再试下,应该就没问题了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询