gpt4 book ai didi

c# - 为什么在 C# 中顺序对静态初始化很重要?

转载 作者:太空狗 更新时间:2023-10-29 18:09:02 25 4
gpt4 key购买 nike

此代码在 C# 中具有定义明确的行为,即无法正常工作:

class Foo
{
static List<int> to = new List<int>( from ); // from is still null
static IEnumerable<int> from = Something();
}

注意:我不是在问如何将该代码修复为 I already known how to do that

这样做的理由是什么? C# 已经执行运行时检查以检测对静态成员的首次访问。为什么不将其扩展到每个成员的事物并让它们按需运行,或者甚至更好地让编译器在编译时找出顺序?

顺便说一句:我认为同样的问题(或几乎相同的问题)也适用于非静态成员。

最佳答案

初始化器只是一个语法糖。编译器在编译您的类时将该代码放入 .cctor 中,并按照它们在代码中的布局顺序放入它们。

它不运行任何检查,因为它没有意义。您可能仍然有初始化周期,所以无论如何它都不会工作。

如果你感兴趣的话,我前段时间写过博客:

关于c# - 为什么在 C# 中顺序对静态初始化很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/660197/

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