我该这么解释这个问题?

gyweiUstc 2015-08-27 03:31:38


如图所示,今天有人问到这个问题,我觉得我好像没有办法解释。有没有能够解释为什么会出错的朋友帮忙给出原理
谢谢~
...全文
197 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
likevs 2015-08-28
  • 打赏
  • 举报
回复
db是字段,在定义它的阶段,只能做初始化操作,并不能马上使用它,它并不是静态字段(你可以把它定义为静态static试下)。 编译器在初始化时,该字段本身还没被分配到托管堆之前,你就用它,则会报警,所以编译器不允许这种情况 所以这种操作,你要放在函数体或属性体内或者构造函数里,因为在调用这些地方的时候,对象已实例化完成,各字段都已成功分配到内存里面 其实楼主,你可以这样想想,一个类,你从类的{ 开始,如果没有到后面类的结束 },也就是说,这个类本身,都还没有完全分配好内存,那么它里面包含的内部成员,又怎么能马上调用呢?你不会是想这样搞:我这个类先生成前一半身在内存里,然后马上先生成几个内部成员,接着,先用这前一半身去调用自己的内部这几个成员做操作了(注意,我指的是这个类自己的【内部成员】,一定要理解什么是内部成员),完成操作之后,我们再把这个类的后半身生成出来,这种编译器是不允许的哦
zhanglong_longlong 2015-08-28
  • 打赏
  • 举报
回复
代码位置不能随便放
  • 打赏
  • 举报
回复
huaneramn 2015-08-28
  • 打赏
  • 举报
回复
有点高级。。。。。。。。。。。。。。。。。。。。。
myhope88 2015-08-28
  • 打赏
  • 举报
回复
这是什么写法~~
gyweiUstc 2015-08-28
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
这种问题,其实说明对自己太随便。
怎么随便了?我想问问 马六贵不?怎么就随便了?想买车问问价格怎么了?有些人自己心里阴暗还整天以为别人跟他一样?
gyweiUstc 2015-08-28
  • 打赏
  • 举报
回复
引用 10 楼 likevs 的回复:
db是字段,在定义它的阶段,只能做初始化操作,并不能马上使用它,它并不是静态字段(你可以把它定义为静态static试下)。 编译器在初始化时,该字段本身还没被分配到托管堆之前,你就用它,则会报警,所以编译器不允许这种情况 所以这种操作,你要放在函数体或属性体内或者构造函数里,因为在调用这些地方的时候,对象已实例化完成,各字段都已成功分配到内存里面 其实楼主,你可以这样想想,一个类,你从类的{ 开始,如果没有到后面类的结束 },也就是说,这个类本身,都还没有完全分配好内存,那么它里面包含的内部成员,又怎么能马上调用呢?你不会是想这样搞:我这个类先生成前一半身在内存里,然后马上先生成几个内部成员,接着,先用这前一半身去调用自己的内部这几个成员做操作了(注意,我指的是这个类自己的【内部成员】,一定要理解什么是内部成员),完成操作之后,我们再把这个类的后半身生成出来,这种编译器是不允许的哦
说的很好。感谢您的解答,再次感谢!~
圣殿骑士18 2015-08-27
  • 打赏
  • 举报
回复
String.Format()的使用不是应该用 {0}占位符吗?@p参数也可以?
  • 打赏
  • 举报
回复
这种问题,其实说明对自己太随便。
  • 打赏
  • 举报
回复
你的头像说明了问题:

它说明你还是需要虚心点。
本拉灯 2015-08-27
  • 打赏
  • 举报
回复
代码要在方法里才能执行
於黾 2015-08-27
  • 打赏
  • 举报
回复
方法必须放进方法里才能执行 不要直接放到类里

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧