9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|
1 | |
const или static?25.07.2012, 15:27. Показов 7685. Ответов 12
Метки нет (Все метки)
Предположим, что класс использует заранее известную строку, которую можно определить как "const". Каждый экземпляр этого класса будет использовать эту строку. Строка меняться не будет.
Вопрос следующий - const string vs static string. static string создаст единственную копию нужной мне строки для всех объектов сразу. а const string будет создаваться во время выполнения конструктора объектов класса, для каждого свой? в плане поставленной выше задачи, статик стринг позволяет экономить память. Или компилятор оптимизирует конст поле? (искал...не нашёл)
0
|
25.07.2012, 15:27 | |
Ответы с готовыми решениями:
12
Static Util Class или Extensions? static const static и const static const? |
199 / 199 / 78
Регистрация: 10.07.2012
Сообщений: 409
|
||||||
25.07.2012, 15:46 | 2 | |||||
в C# реализован пул строк
так что объект для одинаковых строк будет один Добавлено через 12 минут
0
|
Jupiter
|
25.07.2012, 16:02
#4
|
0
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|
25.07.2012, 16:26 [ТС] | 5 |
но и не нужно верить в то, что они всесведущи и всёпредусматривающие)
для этого как раз и задавал вопрос. Раз есть пул строк, то думаю, эквивалентно. А с точки зрения замысла предпочтительнее конст - т.к. по смыслу, строка не должна меняться
0
|
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
|
|
25.07.2012, 16:43 | 6 |
"поле const по своему поведению является статическим. Оно относится к типу, а не к экземплярам типа. Поэтому к полям const можно обращаться с использованием той же нотации ClassName.MemberName, что и используемой для статических полей. Необходим экземпляр объекта." (c)MSDN
иначе говоря для всех экземпляров будет существовать только одно поле конст
0
|
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
|
25.07.2012, 16:44 | 7 |
Строка никогда не меняется, ибо неизменяемый объект.
Совсем странный вопрос: У этих ключевых слов разный контекстный смысл. Static создает переменную принадлежащую собственно типу, а не его экземплярам. А const объявляет переменную не доступную для изменения. Единственное, что их объединяет это возможность обращения к ним как из статического контекста, так и из экземляра класса.
0
|
27 / 27 / 8
Регистрация: 25.07.2012
Сообщений: 48
|
|
25.07.2012, 16:58 | 8 |
после окончательной компиляции твоего приложения строка помеченная как конст везде заменится на просто строку, т.е. как поле она уже представлена не будет, и если в будущем твоя сборка изменится то во всех сборках наследуемых от твоей константное выражение не поменяется.... так что лучше статик, хотя его ты сможешь менять... или readonly, но согластна с предыдущим комментарием - совершенно разные вещи
0
|
17686 / 12872 / 3365
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
25.07.2012, 17:01 | 9 |
const - это и есть статик.
Вопрос в том, должна она быть static readonly или просто const. В первом случае значение этой переменной вычисляется во время выполнения, во втором - во время компиляции.
0
|
Почетный модератор
|
||||||
25.07.2012, 23:41 | 10 | |||||
Нет.
Нет.
Из кода можно сделать вывод что: строки - изменяемый объект, и const это не static. Да и readonly, такое чувство что проверяется только при компиляции...
1
|
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
|
26.07.2012, 00:15 | 11 |
SSTREGG, имелся ввиду безопасный контекст В unsafe, да вооружившись fixed можно любой массив крутить и вертеть как душе угодно.
0
|
Почетный модератор
|
||||||
26.07.2012, 00:21 | 12 | |||||
freeba, если Вас прям так контекст волнует:
0
|
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
||||||
26.07.2012, 22:22 | 13 | |||||
Это не работа с фиксированным массивом? Странно...
Хех. Оспорить нечем, но это по прежнему шаманства с неуправляемыми ресурсами.
0
|
26.07.2012, 22:22 | |
26.07.2012, 22:22 | |
Помогаю со студенческими работами здесь
13
Переопределение CONST и STATIC Static const в dll const static vector<type> Запись в static const char[] Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |