Страница 1 из 1

Вопрос по компиляции readonly-переменных

Добавлено: 25 янв 2013, 01:20
eLVik
Здравствуйте.
Для расчетов понадобилась константа типа DateTime. Создал в словаре переменную MyDate с флагом "Только чтение" и задал значение, затем перешел на вкладку "Код".

Код: Выделить всё

        public virtual DateTime MyDate
        {
            get
            {
                return ParseDateTime("1/1/1900 12:00:00 AM");
            }
        }
Почему переменная, предназначенная только для чтения, компилируется в виртуальное свойство, а внутри применяется относительно тяжелый ParseDateTime?
Если переменная не отмечена флагом "Только чтение", то для нее создается публичное поле.

Предлагаю следующую оптимизацию. Поля с флагом "Только чтение" генерировать с ключевым словом C# readonly или const.

Re: Вопрос по компиляции readonly-переменных

Добавлено: 25 янв 2013, 10:57
HighAley
Здравствуйте.

Описание свойства "Только чтение" находится в разделе "4.2 Переменные".
Данное свойство создано не для хранения констант, а для создания вычисляемых полей. Например, данное свойство необходимо установить, если вы используете в выражении переменной поле из источника данных.

Свойство

Re: Вопрос по компиляции readonly-переменных

Добавлено: 25 янв 2013, 11:27
eLVik
Здравствуйте.

Цитирую документацию:
> Параметр Только чтение (Read Only) устанавливает режим только чтения, т.е. в данном
> случае будет возвращаться значение хранимое в переменной и изменить его пользователь не
> сможет. При этом,если значение инициализируется как выражение, то в момент обращения к
> нашей переменной, выражение будет вычисляться каждый раз заново.

А если его инициализировать как значение, то зачем его каждый раз вычислять?

Спасибо.

Re: Вопрос по компиляции readonly-переменных

Добавлено: 25 янв 2013, 15:33
HighAley
Здравствуйте.
eLVik писал(а):Цитирую документацию:
> Параметр Только чтение (Read Only) устанавливает режим только чтения, т.е. в данном
> случае будет возвращаться значение хранимое в переменной и изменить его пользователь не
> сможет. При этом,если значение инициализируется как выражение, то в момент обращения к
> нашей переменной, выражение будет вычисляться каждый раз заново.

А если его инициализировать как значение, то зачем его каждый раз вычислять?
Данная функциональность изменяться не будет. Вы можете создать константу во вкладке код и потом использовать её в отчёте.

Спасибо.