Какая разница между первым и вторым определениями?
//1
private static string Mask
{
get { return "some text"; }
}
//2
private const string Mask = "some text";
Какие преимущества имеют первый и второй подход?
Какая разница между первым и вторым определениями?
//1
private static string Mask
{
get { return "some text"; }
}
//2
private const string Mask = "some text";
Какие преимущества имеют первый и второй подход?
Пока они являются частными, они, вероятно, будут оптимизированы для более или менее того же кода. Это еще одна история, если они являются общедоступными и используются из других сборок.
const
переменные будут заменены/заключены в другие сборки с использованием выражения const
. Это означает, что вам нужно перекомпилировать каждую сборку, используя выражение const
, если вы измените выражение. С другой стороны, решение свойства будет давать вам вызов вызова метода каждый раз, когда вы используете.
В основном значение полей const
оценивается во время компиляции и инициализируется только при объявлении.
Также важно отметить, что они хранятся в assembly metadata
, поэтому может возникнуть проблема при распространении сборки по всем клиентам, а затем предоставить им обновленную версию, поэтому им необходимо перекомпилировать сборки, ссылающиеся на const, чтобы получить обновленное значение как хорошо.
В нескольких словах поле static
является чем-то вроде глобальной переменной, доступной без экземпляра какого-либо экземпляра базового типа, но в вашем случае изменения private
доступа делают его недоступным из того типа, где он был объявлен.
EDIT:
Очень хорошая публикация сообщества Wiki относительно констант: Ссылка на константы в сборках (сообщение больше не существует с июня 2013 года.)
const - это ключевое слово языка. 1s, вам не разрешено изменять его по строке. Да, свойство также изображает одну и ту же историю, но в ней может быть гораздо больше структуры.