gpt4 book ai didi

c# - 多次调用静态构造函数

转载 作者:行者123 更新时间:2023-12-03 19:08:15 58 4
gpt4 key购买 nike

using System;

namespace ConsoleApplication15
{
using System.Collections.Generic;
using System.Threading;

public static class Program
{
static void Main(string[] args)
{
var test1 = new Test<List<int>>();
var t = new Thread(Tester);
t.Start();

var test2 = new Test<List<int>>();
var test3 = new Test<List<int>>();
var test4 = new Test<List<int>>();
var test5 = new Test<List<int>>();


test1.Do();
test2.Do();
test3.Do();
test4.Do();
test5.Do();
}

private static void Tester()
{
var test5 = new Test<IList<int>>();
test5.Do();
}
}

public class Test<T> where T : IEnumerable<int>
{

private static Something something;

static Test()
{
Console.WriteLine("IM static created ");

something = new Something();
Console.WriteLine(something.ToString());
}

public Test()
{
Console.WriteLine("IM created ");
}

public void Do()
{
Console.WriteLine("Do something! ");
}
}

public class Something
{
public Something()
{
Console.WriteLine("Create something");
}
}
}

当我运行上面的代码时,我发现 中的静态构造函数static Test() 应该被调用一次,但是当我运行代码时,静态构造函数被调用了两次!!!!!

当我删除此行时 <T> where T : IEnumerable<int>一切正常(静态构造函数调用一次)?!!!!

This is the breakpoint for the first call
This is the breakpoint for the second call

最佳答案

静态是每个类型,泛型类型为每个不同的 T 创建一个新类型你指定。

基本上,每个封闭泛型本身就是一种类型,无论是从泛型模板定义的。

这是静态成员的常见问题。

关于c# - 多次调用静态构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331848/

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