Saturday, August 28, 2010

Static constructors vs Type initializers

Недавно в обсуждении с коллегами возник вопрос: есть ли разница между инициализацией статического поля при объявлении и инициализацией его в статическом конструкторе. Т.е. отличаюся ли типы Test в примере ниже:

public class Test
{
public static object o = new object();
}

public class Test
{
public static object o;

public static Test()
{
o = new object();
}
}

Оказывается отличаются. Более того второй пример абсолютно идентичен следующему:

public class Test
{
public static object o = new object();

public static Test()
{
}
}

Подробные объяснения почему так получилось читаем здесь.

No comments:

Post a Comment