Я начинаю изучать программирование ООП с помощью C#. Что касается дизайна, для меня имеет смысл использовать конструктор static
для основного класса моей программы, учитывая, что этот класс содержит код, который будет запускаться только один раз (вся моя программа очень проста и состоит из одного файла .cs).Если класс, который будет запускаться только один раз, содержит статический конструктор?
Например, вот пример кода с помощью обычного конструктора:
class Program
{
const string file = @"C:\Program Files (x86)\myapp\log.txt";
int status;
static int Main(string[] args)
{
var myObj = new Program();
return myObj.status;
}
public Program()
{
int retCode;
try {
// lots of procedures using the file
retCode = 0; // ok
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
retCode = 999; // specific error
}
status = retCode;
}
}
Здесь ту же структуру, но с использованием static
конструктора, как я думаю, что это адекватно. Уведомление status
доступ был изменен также.
class Program
{
const string file = @"C:\Program Files (x86)\myapp\log.txt";
static int status;
static int Main(string[] args)
{
return Program.status;
}
static Program()
{
int retCode;
try {
// lots of procedures using the file
retCode = 0;
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
retCode = 999;
}
status = retCode;
}
}
Вопрос: ли мое предположение правильно, использование второго кода вместо первого? Или я чего-то не хватает? Иными словами: какой из них предпочтительнее (считается лучшим дизайном)? И есть ли что-то фундаментальное для статических конструкторов, которые могут вызвать у меня проблемы в этом случае?
Как выглядит код вызова? – Legends
@Legends Я предполагаю, что это точка входа для программы здесь;) – Carsten
Может быть не напрямую связано, а вместо того, чтобы иметь один класс с точкой ввода программы «Main» и кодом, иметь два отдельных класса: один с Entry Point * (Программа) *, а другая - с вашей бизнес-логикой. Позже вы можете решить, что этот класс статичен или не статичен. – Habib