C#中的结构类型为什么不能直接对属性赋值

 我来答
多姿中国
2016-11-04 · TA获得超过382个赞
知道小有建树答主
回答量:235
采纳率:100%
帮助的人:38.7万
展开全部
有几种变量在创建时自动初始化为它们的默认值。对于类类型和其他引用类型的变量,此默认值为 null。但是,由于结构是不能为 null 的值类型,结构的默认值是通过将所有值类型字段设置为它们的默认值,并将所有引用类型字段设置为 null 而产生的值。如上所述,结构的默认值就是将所有值类型字段设置为它们的默认值并将所有引用类型字段设置为 null 而产生的值。由于这个原因,结构不允许它的实例字段声明中含有变量初始值设定项。此限制只适用于实例字段。在结构的静态字段声明中可以含有变量初始值设定项。
我是小牛呀
2018-07-02
知道答主
回答量:14
采纳率:100%
帮助的人:2.6万
展开全部

不太清楚你的问题,有2种情况:

1、在结构体定义外,不能直接用a.b = 1;这样的语句赋值,这是因为C#中结构体成员变量默认私有

2、在定义结构体的代码中,不能赋初始值,这一点就有点复杂了,首先要搞清楚为什么类成员变量可以赋初始值,类声明中的赋值语句会被编译器自动生成到构造函数中,然而结构体的默认无参构造函数不允许重载,那为什么C#不允许重载结构体的默认无参构造函数呢,你可以参照这个:网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式