c# 为什么结构中不能有实例字段初始设定值项,结构中可以写类不?不要讲规定,求高手

 我来答
隐灿38
2011-08-10 · TA获得超过667个赞
知道小有建树答主
回答量:854
采纳率:0%
帮助的人:296万
展开全部
不知道你知道堆栈概念不? 结构声明在 栈区 类声明在堆区 人们在操作计算机的时候只能操作栈区 那这样说怎么操作类呢? 就是在堆区的类 在栈区有一个地址 所以我们可以操作这个地址 而间接的操作类. 弄清楚这个概念后 就是结构和类了 结构直接存在栈区 所以栈区直接有值和地址 在运行时是直接调用的 所以如果没有值就会空指针异常. 所以 没有初始设定项 必须一开始直接赋值 . 结构中我记得不能写类. 如果能写就是在结构中引用某个类的堆地址 理论上也是可行的
追问
谢谢,但是我还是不明白 为什么就不能定义结构的时候给变量赋值?您能详细解释下么,谢谢您
追答
不用谢 值类型的变量赋值,是将内存中的真实数据复制一份赋给新的变量。那么在赋值之后内存中就将存在两份一模一样的数据。 我好想给你说错了...不好意思啊 上面那段话写的 值类型在栈区开辟空间 所以如果有直接赋值相当于 刚声明好 就有两个值 一个是 0 一个是你付给他的 值 这样的操作具有二义性 而且会有两个值的地址和一个对象的地址.我们究竟该取哪一个呢?? 刚才查了好几个文档... 我发现自己好几个概念都记错了.

在结构声明中,除非字段被声明为 const 或 static,否则无法初始化。

结构不能声明默认构造函数(没有参数的构造函数)或析构函数。

结构在赋值时进行复制。 将结构赋值给新变量时,将复制所有数据,并且对新副本所做的任何修改不会更改原始副本的数据。 在使用值类型的集合(如 Dictionary)时,请务必记住这一点。

结构是值类型,而类是引用类型。

与类不同,结构的实例化可以不使用 new 运算符。

结构可以声明带参数的构造函数。

一个结构不能从另一个结构或类继承,而且不能作为一个类的基。 所有结构都直接继承自 System.ValueType,后者继承自 System.Object。

结构可以实现接口。

结构可用作可以为 null 的类型,因而可向其赋 null 值。
mptcyh
2011-08-09
知道答主
回答量:21
采纳率:0%
帮助的人:17.2万
展开全部
像这些赋值要写在方法里。
结构中可以写类不?这是什么意思
追问
为什么类中的变量可以有直接赋值,或是 实例化字段的初始值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式