我在C#中有一个简单的应用程序.当我运行代码时,我没有得到预期的结果?.我得到2,2,1但我期待1,2,3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
MyList<int> list1 = new MyList<int>();
MyList<int> list2 = new MyList<int>();
MyList<double> list3 = new MyList<double>();
Console.WriteLine(list1.GetCount());
Console.WriteLine(list2.GetCount());
Console.WriteLine(list3.GetCount());
}
}
public class MyList<T>
{
static int _count;
public MyList()
{
_count++;
}
public int GetCount()
{
return _count;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Alb*_*nbo 13
结果如我所料
2
2
1
Run Code Online (Sandbox Code Playgroud)
这篇MSDN博客文章告诉我们
泛型类声明中的静态变量在相同的闭合构造类型(第26.5.2节)的所有实例之间共享,但不在不同的闭合构造类型的实例之间共享.无论静态变量的类型是否涉及任何类型参数,这些规则都适用.
这种方式工作的原因与为单个静态声明生成了多少个值有关.给定的每种类型将有一个静态值AppDomain.
在非通用情况下,这意味着声明和值之间存在1-1关系.毕竟string,给定的只有一种类型AppDomain.
在一般情况下,虽然它涉及更多.类型MyList<int>和MyList<double>实际上是不同的类型.因此,它们具有彼此独立的单独静态值.
| 归档时间: |
|
| 查看次数: |
1412 次 |
| 最近记录: |