我对所有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?
}
}
VB.NET也是如此。
答案 0 :(得分: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?
}
}
话虽如此,无论传递给Foo<T>
的泛型类型参数如何,这都将保持相同的FoosHeight。如果你想为每个Foo<T>
版本提供不同的值,你必须选择一个类型来放入那个类型参数,并忘记继承方案。
答案 1 :(得分:7)
您需要指定类型,例如
Foo<int>.FoosHeight = 50;
或
Foo<Bar>.FoosHeight = 50;
但每个都是分开的。 Foo<int>.FoosHeight
与Foo<Bar>.FoosHeight
无关。它们实际上是两个独立的类,有两个不同的静态字段。如果您希望所有Foo&lt;&gt;的值相同然后你需要一个单独的地方来存储它像
FooHelper.FoosHeight = 50;
FooHelper与Foo&lt;&gt;没有正式关系。
答案 2 :(得分:2)
每个特定的泛型都是它自己的类型,因此它有自己的静态变量。因此,Foo<int>
具有与Foo<string>
不同的静态高度成员。如果您希望在所有特定Foo<T>
类型之间共享,则需要在其他地方实现。
如果你真的只想设置Foo<object>
类型的值,那就是:Foo<object>
。