.NET глазами дельфийца. C# - Поля классов

ОГЛАВЛЕНИЕ

 

Поля классов

В Delphi для того, чтобы реализовать концепцию , можно использовать свойства (properties), при этом приходится писать нечтоподобное:


type
TMyObject = class
private
fData: integer
public
// эквивалент поля для чтения
property Data: integer read fData;
end;

Поля в C# введены на уровне языка:


class A {
public readonly int Data;
}

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

Это приводит к интересным последствиям. В стандарте C# рассматриваетсяситуация, когда имеется библиотека и использующая ее программа, компилируемыераздельно. Если в библиотеке использовать константу, то при изменении еезначения (и перекомпиляции библиотеки) нужно перекомпилировать и программу.Если же использовать поле , то программуперекомпилировать не обязательно, т.к. значение поля определяется на стадииисполнения.