![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Arks |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
Интересует, что делают эти свойства: считывают значения из какой-то переменной или вычисляют? Как это в массиве и строках организовано?
Просто интересует надо ли запихивать в цикле эти данные отдельную переменную или также эффективно будет напрямую свойства читать? |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Arks, конечно считывают.
Уж сильно часто эта длинна используется. Для таких вопросов есть reflector Это сообщение отредактировал(а) ivashkanet - 12.12.2006, 10:14 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
В рефлекторе такие свойства помечены атрибутом [MethodImpl(MethodImplOptions.InternalCall)] и не имеют реализации
![]() -------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
![]() А во всяких ArrayList, List<T> --- длина храниться ![]() ![]() ![]() |
|||
|
||||
Arks |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
Спасибо за ответы.
Для ivashkanet, неа. Потому что, вычислять долго и неэффективно, как и для массива. Или что ты имел в виду? Это сообщение отредактировал(а) Arks - 12.12.2006, 16:36 |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Это как раз и означает, что длина обычного массива вычисляется. Но не обычными средствами, а низкоуровневыми. Типа <размер в байтах> /4 . А может и еще круче ![]() |
|||
|
||||
Arks |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
Так вы уж определитесь пожалуйста с когда вычисляется, когда нет?
![]() Добавлено @ 17:12 Кстати, я в рефлекторе ничего путного не нашёл:
Мне это ровным счётом ничего не говорит. |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Во первых: а наф оно тебе? Во вторых: Дуда же написал, что у этого свойства стоит атрибут MethodImpl(MethodImplOptions.InternalCall). Если перевести на русский, то РеализацияМетода(ВнутреннийВызов). Что еще не понятно? |
|||
|
||||
Arks |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
1) Хочу знать как эффективнее - не охото, чтобы он в цикле тьму времени терял на вызовы фунцкий.
2) Из того, что сказал Дуда, я так понял, что длина в свойствах с MethodImpl(MethodImplOptions.InternalCall) хранится, а через пост ты сказал, что вычисляется. Так где правда? И в том коде, что я показал как раз и есть этот внутренний вызов? MethodImpl(MethodImplOptions.InternalCall)? Так? |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Зависит от ситуации. Например для обычных массивов она вычисляется, а для коллекций --- хранится. См. выше и перечитай тему сначала. Нет. Там только вызов метода Array_GetLength. Нажми на него и посмотри что именно вызывается. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Для строк размер стопудово хранится, а не вычисляется, т.к. строка - неизменяемый объект. Не хранится прямо в классе String по гейтс знает каким причинам, возможно это как-то связано с возможностью интернирования строк. Размер Array также неизменяемая величина, но здесь сложнее сказать, почему размер не хранится в классе. И тот и другой класс имеют синтаксические аналоги - возможно, причина как-то связана и с этим. В любом случае, нам остаётся только гадать. Хотя может в гугле что-то найдётся по этому поводу...
-------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
С чего это ты взял? Для строк стоит тот же MethodImpl(MethodImplOptions.InternalCall). А вот это чистая правда ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
С того, что -------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Нее, mr.DUDA, так и массив такой же неизменяемый
![]() Хочу оговориться: Я бы хранил это значение, но меня смущает InternalCall ![]() А вообще --- какая хрен разница ![]() |
|||
|
||||
Arks |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 7.5.2006 Где: Барнаул Репутация: нет Всего: нет |
А вот на что ссылается тот код:
Что он делает я честно говоря не врубился, зато нашёл кое-что другое. Длина строки действительно хранится. Вот:
Длина массива похоже хранится в этой переменной:
Это сообщение отредактировал(а) Arks - 13.12.2006, 09:53 |
||||||
|
|||||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |