Нажмите ввод в текстовом поле и выполните команду кнопки

const подразумевает static (вам не нужен экземпляр для ссылки на значение const).

Я хочу также добавить этот важный момент: когда вы ссылаетесь на (ссылку) на сборку с public const, это значение копируется в вашу сборку. Поэтому, если значение const в ссылочной сборке изменяется, ваша сборка будет по-прежнему иметь исходное скомпилированное значение.

Если это поведение не приемлемо, тогда вы должны рассмотреть создавая поле a public static readonly.

Lib.dll, представленный как двоичный:

public class Foo {
    public const int HATS = 42;
    public static readonly int GLOVES = 33;
}

App.exe, ссылки Lib .dll:

Foo.HATS    // This will always be 42 even if the value in Lib.dll changes,
            // unless App.exe is recompiled.

Foo.GLOVES  // This will always be the same as Foo.GLOVES in Lib.dll

Из MSDN :

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

blockquote>

Из DotNetPerls :

DLL. Когда вы используете поле или объявление const, компилятор C # фактически вводит значение переменной const непосредственно в код IL. Следовательно, он по существу стирает const как отдельный объект.

Внимание: если программы, зависящие от const, не перекомпилируются после изменения значения const, они могут сломаться [ потому что они будут продолжать использовать предыдущее значение ].

blockquote>

29
задан udondan 17 March 2015 в 05:41
поделиться