为什么.NET Framework 4.0中的静态类Tuple有新的关键字来创建实例?

Sen*_*cob 3 c# oop static tuples c#-4.0

静态类和静态类成员

在这个链接微软说,

静态类无法实例化.换句话说,您不能使用new关键字来创建类类型的变量.因为没有实例变量,所以可以使用类名本身访问静态类的成员.

我学习了静态类,如上所述.但是对于.NET Framework 4中引入的静态类Tuple,可以使用new关键字来创建元组.

var population = new Tuple("New York",7891957,7781984,7894862,7701639,7322564,8008278);

另一个例子

任何人都可以解释这是怎么可能的?

dtb*_*dtb 5

元组类是静态的,不能被实例化。

// does not compile
var population = new Tuple("New York", 7891957, 7781984, 7894862, 7071639, 7322564, 8008278);
Run Code Online (Sandbox Code Playgroud)

还有另一个类,Tuple<T1, T2, T3, T4, T5, T6, T7> Class。这个类不是静态的,可以实例化。

// compiles
var population = new Tuple<string, int, int, int, int, int, int>("New York", 7891957, 7781984, 7894862, 7071639, 7322564, 8008278);
Run Code Online (Sandbox Code Playgroud)


Pau*_*ner 5

静态Tuple类是工厂类:它的工作只是提供一种构造元组的简单方法.

实际上,.NET 4中有8个元组类:

  • 7级通用的元组,您可以创建的情况下,高达8通用的说法:Tuple<T1, T2>,Tuple<T1, T2, T3>等等.
  • 静态Tuple工厂类集中了上述的构造.

因此,您不能创建静态类的实例,但如果它们具有不同的泛型参数,则可以使用具有相同名称的多个类.