Определить поле в статическом классе

c#

93 просмотра

1 ответ

9992 Репутация автора

У меня есть следующий статический класс со статическим полем:

public static class IncludeExtender {

  private static readonly MethodInfo _include = typeof(EntityFrameworkQueryableExtensions).GetTypeInfo();

}

Есть ли разница между предыдущим примером и следующим, где значение поля определено в конструкторе класса?

public static class IncludeExtender {

  private static readonly MethodInfo _include;

  static IncludeExtender() {
    _include = typeof(EntityFrameworkQueryableExtensions).GetTypeInfo();
  }

}

Что будет лучшим вариантом для этого?

Автор: Miguel Moura Источник Размещён: 18.07.2016 03:42

Ответы (1)


1 плюс

26188 Репутация автора

Решение

Нет, они идентичны. В readonly-modifier говорится , что значение членов может быть изменено только в объектно-intialization. Это либо непосредственно в теле класса, либо в конструкторе.

Однако, инициализируя переменную в конструкторе, вы можете добавить дополнительную логику, которая влияет на значение, например, вы можете изменить значение в зависимости от определенного условия. Посмотри это:

static IncludeExtender() {
    var a = "Test";
    _include = a.GetType().GetTypeInfo();
  }
Автор: HimBromBeere Размещён: 18.07.2016 03:44
Вопросы из категории :
32x32