本文发表在 rolia.net 枫下论坛ClassA<T> 是一个泛型类,当它每次被实例化的的时候,例如:
ClassA<string> x1 = new ClassA<string>("I am here");
ClassA<int> x2 = new ClassA<int>(20);
.net编译器在碰到这样的泛型代码的时候会在后台生成这样两个毫无关系的类,用伪代码表示一下:
public class ClassA'[string]
{
public string Item
{
get;
set;
}
public int MyIndex
{
get;
set;
}
public ClassA(string source)
{
Item = source;
MyIndex = classIndex++;
}
static int classIndex = 0;
}
and
public class ClassA'[int]
{
public int Item
{
get;
set;
}
public int MyIndex
{
get;
set;
}
public ClassA(int source)
{
Item = source;
MyIndex = classIndex++;
}
static int classIndex = 0;
}
然后用这样两个独立生成的类去实例化两个变量:x1,和 x2
因为x1和x2是由两个完全不同的类实例化而来,所以它们的 static int classIndex 当然毫无关系,所以最后输出结果为000更多精彩文章及讨论,请光临枫下论坛 rolia.net
ClassA<string> x1 = new ClassA<string>("I am here");
ClassA<int> x2 = new ClassA<int>(20);
.net编译器在碰到这样的泛型代码的时候会在后台生成这样两个毫无关系的类,用伪代码表示一下:
public class ClassA'[string]
{
public string Item
{
get;
set;
}
public int MyIndex
{
get;
set;
}
public ClassA(string source)
{
Item = source;
MyIndex = classIndex++;
}
static int classIndex = 0;
}
and
public class ClassA'[int]
{
public int Item
{
get;
set;
}
public int MyIndex
{
get;
set;
}
public ClassA(int source)
{
Item = source;
MyIndex = classIndex++;
}
static int classIndex = 0;
}
然后用这样两个独立生成的类去实例化两个变量:x1,和 x2
因为x1和x2是由两个完全不同的类实例化而来,所以它们的 static int classIndex 当然毫无关系,所以最后输出结果为000更多精彩文章及讨论,请光临枫下论坛 rolia.net