Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2010, 00:30   #1
Pti44ka
Пользователь
 
Аватар для Pti44ka
 
Регистрация: 02.09.2009
Сообщений: 56
По умолчанию ReadOnly и Const

Читаю msdn и возник вопрос.
while a const field is a compile-time constant, the readonly field can be used for runtime constants as in the following example:
Код:
public static readonly uint l1 = (uint)DateTime.Now.Ticks;
Как понять, что такое константа времени выполнения и как понять предыдущий код?
Pti44ka вне форума Ответить с цитированием
Старый 21.04.2010, 01:00   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

в шарпе очень много описанно про стат константы
если в двух словах, то примерно так:
есть клас скажем а в нем есть статическая константа b
a a1= new a();
a a2 = new a();

a.b=2;
то b изменится и для а1 и для а2
В отличии от обычных перменных класса думаю понятно?
dampirik вне форума Ответить с цитированием
Старый 21.04.2010, 01:14   #3
Pti44ka
Пользователь
 
Аватар для Pti44ka
 
Регистрация: 02.09.2009
Сообщений: 56
По умолчанию

Цитата:
Сообщение от dampirik Посмотреть сообщение
в шарпе очень много описанно про стат константы
если в двух словах, то примерно так:
есть клас скажем а в нем есть статическая константа b
a a1= new a();
a a2 = new a();

a.b=2;
то b изменится и для а1 и для а2
В отличии от обычных перменных класса думаю понятно?
Я конечно понимаю, что константа обладает статическими свойствами и чтобы получить к ней доступ или изменить достаточно написать имя класса и поставить имя константы. Но я хотела узнать немного другое. Чем отличается константа времени компилирования (const) и константа времени выполнения программы(readonly). Как понять констаната времени выполнения?? Она же ведь не создается во время выполнения программы?7 Можете навести пример, пожалуйста.
Pti44ka вне форума Ответить с цитированием
Старый 21.04.2010, 02:08   #4
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Вот...
const 1
const 2
readonly
dampirik вне форума Ответить с цитированием
Старый 21.04.2010, 11:53   #5
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Как понимаю я:
const - устанавливается при компиляции
a
readonly - в процессе выполнения программы
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 21.04.2010, 21:24   #6
Pti44ka
Пользователь
 
Аватар для Pti44ka
 
Регистрация: 02.09.2009
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Skif-F Посмотреть сообщение
Как понимаю я:
const - устанавливается при компиляции
a
readonly - в процессе выполнения программы
Да. Я согласна. Так написано в msdn. Но просто я не могу понять, как константа устанавливается во время компиляции??

мы ведь пишем поле, например, const string = "Hello", то как компилятор считывает это все?? И как это константа устанавливается во время выполнения программы? Просто я поняла приблизительно так. Например, у нас есть высота и сторона треугольника и есть константа readonly, которая означает площадь треугольника. Если мы этой константе поставим в соответствие формулу, а не какое-то значение, то константа будет устанавливаться во время выполнения программы, после того как будет посчитана формула. Правильно я хоть понимаю?? Просто хочу выучить все, чтобы не просто иметь сухие знания, но еще и использовать их где-то.
Pti44ka вне форума Ответить с цитированием
Старый 22.04.2010, 08:10   #7
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Значение const устанавливаем явно в программе:
Код:
const int Константа = 12;
но не:
Код:
const int Константа = КакаятоПеременная;
а значение поля readonly в конструкторе можем определить, исходя из значения какой-либо переменной, но только один раз.
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 23.04.2010, 14:48   #8
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Типо заключение к теме.
Поля ReadOnly отличаются от Const по сути одной особенностью.
Она заключается в том, что ей можно задать значение в конструкторе класса, где она объявлена. Т.е. можно произвести некий расчет, присвоить значение переменной и использовать как константу.

Последний раз редактировалось Hollander; 23.04.2010 в 14:51.
Hollander вне форума Ответить с цитированием
Старый 23.04.2010, 16:32   #9
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Цитата:
Сообщение от Hollander Посмотреть сообщение
Типо заключение к теме.
Поля ReadOnly отличаются от Const по сути одной особенностью.
Она заключается в том, что ей можно задать значение в конструкторе класса, где она объявлена. Т.е. можно произвести некий расчет, присвоить значение переменной и использовать как константу.
Однако, readonly - это не полноценная константа ,
а всего лишь переменная, доступная только для чтения
но Вам, Pti44ka, лучше не париться по этому поводу (слишком глубоко придётся лезть в дебри)
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cоздать array of const freetonik Общие вопросы Delphi 5 28.11.2009 16:59
TextBox(readonly) Chartvit Общие вопросы C/C++ 1 21.11.2009 22:36
изменение const zander Microsoft Office Excel 1 13.05.2009 09:12
Квалификатор const Locode Общие вопросы C/C++ 1 26.03.2009 19:37