如果程序是微不足道的——例如只有一种形式而没有额外的类文件等(例如简单的学校作业),那么您可能只需在 Form 类内但在任何方法之外声明一个静态全局,例如
public class MyForm : Form
{
static private BSTree<string> record = new BSTree<string>();
public MyForm()
{
...
}
...
}
然后从您的MyForm 实例中访问它,例如MyForm.record。
还请注意,您可以在方法之外声明变量(例如static private BSTree<string> record;),然后从例如内部初始化它(例如new BSTree<string>())你的构造函数。这两种方法之间有一个非常细微的区别(即影响初始化各个成员的顺序),但这很少有影响。
请注意,static 成员“属于”类,因此该成员只有一个“版本”。即对于您的班级的每个实例,该成员没有单独的“版本”。
但除此之外,您可能有一个静态的“配置”或“全局”类,其中包含这些值(可能还有从配置文件等读取的其他值):
public static class MyConfig
{
static public BSTree<string> record = new BSTree<string>();
...
}
然后您可以从 MyForm 类中访问它,例如 MyConfig.record。
虽然 - 理想情况下您应该公开 properties 而不是 fields,例如:
public static class MyConfig
{
static private BSTree<string> record = new BSTree<string>();
static public BSTree<string> Record
{
get {return record;}
set {record = value;}
}
...
}
然后您可以从 MyForm 类中访问它,例如 MyConfig.Record。这将提供对底层record 成员的直接访问。
但更强大的方法是创建代表消费者操作成员的特定方法,而不是仅仅将成员直接暴露给消费者。这样,您可以限制允许对它们进行的操作类型,并可以以特定方式公开结果等。也就是说,您正在为基础成员增加价值,而不仅仅是“持有”它们。