в c # мы имеем ключевое слово const или readonly для объявления константы.
сопзЬ
Постоянный член определяется во время компиляции и не может быть изменен во время выполнения. Константы объявляются как поле с использованием ключевого слова const и должны быть инициализированы так, как они объявлены. Например;
public class MyClass
{
public const double PI = 3.14159;
}
PI нельзя изменить в приложении где-либо еще в коде, так как это приведет к ошибке компиляции.
* 1013 только для чтения *
Член только для чтения похож на константу в том смысле, что он представляет собой неизменное значение. Разница в том, что элемент readonly может быть инициализирован во время выполнения в конструкторе, а также может быть инициализирован так, как он объявлен. Например:
public class MyClass
{
public readonly double PI = 3.14159;
}
или
public class MyClass
{
public readonly double PI;
public MyClass()
{
PI = 3.14159;
}
}
Поскольку поле только для чтения можно инициализировать либо в объявлении, либо в конструкторе, поля только для чтения могут иметь различные значения в зависимости от используемого конструктора. Поле только для чтения также можно использовать для констант времени выполнения, как в следующем примере:
public static readonly uint l1 = (uint)DateTime.Now.Ticks;
Примечания
члены только для чтения не являются неявно статическими, и поэтому ключевое слово static может быть применено к полю только для чтения, если требуется.
Член только для чтения может содержать сложный объект, используя новое ключевое слово при инициализации.
Члены только для чтения не могут содержать перечисления.
кредит идет сюда:
http://www.dotnetspider.com/forum/69474-what-final-c-i-need-detailed-nfo.aspx