Подтвердить что ты не робот

Поле Const или получить свойство

Какая разница между первым и вторым определениями?

//1
private static string Mask
{
   get { return "some text"; }
}

//2 
private const string Mask  = "some text"; 

Какие преимущества имеют первый и второй подход?

4b9b3361

Ответ 1

Пока они являются частными, они, вероятно, будут оптимизированы для более или менее того же кода. Это еще одна история, если они являются общедоступными и используются из других сборок.

const переменные будут заменены/заключены в другие сборки с использованием выражения const. Это означает, что вам нужно перекомпилировать каждую сборку, используя выражение const, если вы измените выражение. С другой стороны, решение свойства будет давать вам вызов вызова метода каждый раз, когда вы используете.

Ответ 2

В основном значение полей const оценивается во время компиляции и инициализируется только при объявлении. Также важно отметить, что они хранятся в assembly metadata, поэтому может возникнуть проблема при распространении сборки по всем клиентам, а затем предоставить им обновленную версию, поэтому им необходимо перекомпилировать сборки, ссылающиеся на const, чтобы получить обновленное значение как хорошо.

В нескольких словах поле static является чем-то вроде глобальной переменной, доступной без экземпляра какого-либо экземпляра базового типа, но в вашем случае изменения private доступа делают его недоступным из того типа, где он был объявлен.

EDIT:

Очень хорошая публикация сообщества Wiki относительно констант: Ссылка на константы в сборках (сообщение больше не существует с июня 2013 года.)

Ответ 3

const - это ключевое слово языка. 1s, вам не разрешено изменять его по строке. Да, свойство также изображает одну и ту же историю, но в ней может быть гораздо больше структуры.