首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能在结构内部初始化非静态字段?

为什么不能在结构内部初始化非静态字段?
EN

Stack Overflow用户
提问于 2010-02-21 06:52:40
回答 4查看 4.3K关注 0票数 20

考虑一下这个代码块:

代码语言:javascript
复制
struct Animal
{
    public string name = ""; // Error
    public static int weight = 20; // OK

    // initialize the non-static field here
    public void FuncToInitializeName()
    {
        name = ""; // Now correct
    }
}
  • 为什么我们可以在结构中初始化static字段,而不能在non-static字段中初始化?
  • 为什么我们必须在方法体中初始化non-static
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-21 06:56:23

看看为什么值类型不能具有默认的构造函数?

票数 7
EN

Stack Overflow用户

发布于 2011-11-23 00:43:33

CLI希望能够分配和创建任何需要'n‘字节内存的值类型的新实例,只需分配'n’字节并用零填充它们。CLI没有理由提供一种方法来指定在任何包含结构的实体对外部代码可用之前,必须在其中的每个结构上运行构造函数,或者每当创建特定n字节结构的实例时,编译器都应该复制一个‘模板实例’。然而,实际上,CLI不允许这样的事情。因此,编译器没有理由假装它有一种方法来确保结构将被初始化为除内存填充的零默认值之外的任何东西。

票数 1
EN

Stack Overflow用户

发布于 2010-02-21 06:56:06

不能在结构中编写自定义默认构造函数。实例字段初始化器最终需要移动到无法定义的构造函数中。

静态字段初始化器被移动到静态构造函数中。可以在结构中编写自定义静态构造函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2305122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档