访问泛型类的静态属性?

ser*_*hio 7 .net generics

Height为所有Foo的成员使用了一个.像这样

public class Foo<T> 
{
    public static int FoosHeight;
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Foo<???>.FoosHeight = 50; // DO I Set "object" here?
    }
}
Run Code Online (Sandbox Code Playgroud)

VB.NET也是如此.

Dav*_*ton 13

你必须在那里放一些泛型类型参数.话虽这么说,我有时会使用某种继承方案来获得此功能,而无需输入泛型类型参数.

public class Foo
{
    public static int FoosHeight;
}

public class Foo<T> : Foo
{
   // whatever
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Foo.FoosHeight = 50; // DO I Set "object" here?
    }
}
Run Code Online (Sandbox Code Playgroud)

话虽这么说,无论传入的泛型类型参数如何,这都将保持相同的FoosHeight Foo<T>.如果你想为每个版本提供不同的值Foo<T>,你必须选择一个类型来放入那个类型参数,并忘记继承方案.


Sam*_*eff 7

您需要指定类型,例如

Foo<int>.FoosHeight = 50;
Run Code Online (Sandbox Code Playgroud)

要么

Foo<Bar>.FoosHeight = 50;
Run Code Online (Sandbox Code Playgroud)

但每个都是分开的. Foo<int>.FoosHeight与...无关Foo<Bar>.FoosHeight.它们实际上是两个独立的类,有两个不同的静态字段.如果你想让所有Foo <>的值相同,那么你需要一个单独的地方来存储它

FooHelper.FoosHeight = 50;
Run Code Online (Sandbox Code Playgroud)

FooHelper与Foo <>没有正式关系.