Если программа тривиальна — например, только одна форма и никаких дополнительных файлов классов и т. д. (например, простое школьное задание), то вы, вероятно, просто объявите статический глобальный внутри вашего класса 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
.
Хотя в идеале вы должны предоставлять свойства, а не поля, например:
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
.
Но более надежным подходом было бы создание конкретных методов, которые работают с членами от имени потребителя, а не просто предоставляют элементы непосредственно потребителю. Таким образом, вы можете ограничить типы операций, разрешенных для них, и можете предоставлять результаты определенным образом и т. д., т. е. вы добавляете ценность базовым членам, а не просто «удерживаете» их.
person
Sepster
schedule
19.03.2013