в .Net 4.0 много улучшений производительности по сравнению с 3.5 (взять тот же стрингбилдер), и хотя разница не слишком большая, если комп поддерживает лучше использовать последнее, разве нет?:)
1. Когда вызываются статические конструкторы классов в C#?
Один раз при первом создании экземпляра класса или при первом обращении к статическим членам класса
После каждого обращения к статическим полям, методам и свойствам
Строгий порядок вызова не определен
Статических конструкторов в C# нет
Мне кажется, тут нет правильного варианта. Правильный ответ — до вызова метода, который первый вызовет статический метод/создаст объект, а не в момент, когда это произойдет. Пример, при выполнении кода:
class Singleton
{
public static string S = Echo("Field initializer");
public static string Echo(string s)
{
Console.WriteLine(s);
return s;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting Main...");
if (args.Length == 1)
{
Console.WriteLine(Singleton.S);
}
Console.ReadLine();
}
}
вывод будет таким:
Field initializer
Starting Main...
То есть поле будет проинициализировано, даже если условие в if неверно и никакого обращения к классу реально не происходило.
Мне кажется, тут нет правильного варианта. Правильный ответ — до вызова метода, который первый вызовет статический метод/создаст объект, а не в момент, когда это произойдет. Пример, при выполнении кода:
вывод будет таким:
То есть поле будет проинициализировано, даже если условие в if неверно и никакого обращения к классу реально не происходило.
мне кажется, лучше использовать стандартные методы
www.3dnews.ru/software-news/639512