gpt4 book ai didi

.net - .NET 中字段初始值设定项的用途是什么(除了可读性)?

转载 作者:行者123 更新时间:2023-12-04 12:17:02 25 4
gpt4 key购买 nike

我只是想了解字段初始值设定项。我遇到了错误 - 字段初始值设定项不能使用非静态字段、方法或 Prop 。在为此寻找答案时,我遇到了 THIS邮政。

对该帖子的大多数投票答案表明,在调用构造函数之前,“this”不存在。有谁知道为什么会这样?为什么在调用字段初始值设定项之前不能存在“this”?

在我看来,来自 C/C++ 背景,'this' 只是在堆上分配的一块内存。并且它必须存在,然后才能为“this”的任何成员分配值。 (所以它肯定存在于字段初始值设定项之前)。

最佳答案

当一个对象被实例化时,会发生以下情况(简化):

  • 内存已分配
  • 执行字段初始值设定项
  • 'this' 已创建,将所有(非静态)字段链接到此实例

  • 执行字段初始化程序时,各个字段尚未链接到实例,因此您不能引用另一个字段(静态字段除外),因为这只能通过“this”实例(不存在)中的引用起作用然而)。

    为避免混淆,您可以选择不使用字段初始值设定项并初始化构造函数主体中的所有字段,但结果是,您始终需要显式声明构造函数。

    关于.net - .NET 中字段初始值设定项的用途是什么(除了可读性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45629756/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com