关于c#中泛型的问题和default关键字,谢谢!

如图所示,是不是泛型类型的属性不能直接赋值为null。这个default(T)是什么意思,这个default是个方法或者函数吗(有括号,T为形参,null为返回值)?de... 如图所示,是不是泛型类型的属性不能直接赋值为null。
这个default(T)是什么意思,这个default是个方法或者函数吗(有括号,T为形参,null为返回值)?default关键字还有什么其它用法吗?

最后,问一下关于属性/字段,比如public int A=1。直接这么赋值的话,是不是默认个语句定义的A是字段而不是属性。包括图中的elem和nextNode都是字段类型吗?

谢谢
展开
 我来答
破晓崇明
推荐于2017-12-15 · TA获得超过130个赞
知道小有建树答主
回答量:191
采纳率:100%
帮助的人:156万
展开全部

default(T)是指把调用T类型的默认构造函数对其进行初始化,

如,int a=default(int);则a=0;如果T类型是引用类型的话,则初始化为null


你程序中出现的问题是,

泛型中的T仅仅是个占位符,在程序JIT编译的时候,根据你传入的实参类型进行填充

所以,假如你在调用的时候,T的类型是个值类型的话,像你这样直接赋值null显然就会出错


可以给泛型假如约束保证其正常运行

class StackNode<T> where T:class
{
    //...
}
这样你再试下,应该就没问题了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式