gpt4 book ai didi

c# - 通用静态字段初始化

转载 作者:行者123 更新时间:2023-11-30 18:19:05 32 4
gpt4 key购买 nike

我只是对下面的代码感到好奇:

public static class Container<T>
{
public static readonly T[] EmptyArray = new T[0];
}

据我所知,静态类 Container 将在执行以下代码时初始化:

...
var emptyArray = Container<int>.EmptyArray;
...

我说得对吗?对静态泛型类/成员初始化的任何解释将不胜感激。提前致谢。

最佳答案

保证在您访问静态字段之前对其进行初始化。 (而且,如果还有一个静态构造函数,那么所有静态字段将在静态构造函数运行之前被初始化。)

对于泛型类,静态初始化在每个类型的基础上工作,所以 Container<int>就好像它是一个与 Container<double> 完全不同的类.这实际上适用于泛型类的所有静态部分 - 每种类型都有自己的“副本”。

一个例子将更清楚地说明最后一点:

static class Foo<T>
{
static int count = 0;
public static int Increment()
{
return ++count;
}
}

public class Program
{
public static void Main()
{
Console.WriteLine(Foo<int>.Increment());
Console.WriteLine(Foo<int>.Increment());
Console.WriteLine(Foo<double>.Increment());
}
}

输出:

1
2
1

关于c# - 通用静态字段初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742357/

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