Войти
ФлеймФорумПрограммирование

C#. Ссылка на элемент массива. (4 стр)

Страницы: 1 2 3 4
#45
12:27, 31 янв. 2020

alexzzzz

Да, правильно, но типы тут непричём. Ссылка и ссылочный тип ― вещи не связанные.

ну ты ж понимаешь, что это быдло-архитектурный костыль?
Создатели си шарпа не делали этого не потому что не смогли, а потому сознательно обрезали все что может привести к двусмысленности и непредсказуемости. 


#46
12:49, 31 янв. 2020

я канешно извиняюсь что лезу в ваш разговор... но вроде эта "фича" вроде ссылки на элемент массивы - фича конкретно il а не шарпа и в том же вбнет она была очень давно. а шарпе тупо не было синтаксиса под это, что в 7.0 и исправили?

#47
(Правка: 1 фев. 2020, 1:15) 16:08, 31 янв. 2020

Polyflow3d
> ну ты ж понимаешь, что это быдло-архитектурный костыль?

Не особо.

Value-типовость и reference-типовость определяют устройство переменных, как они хранят пользовательские данные. Value-переменные хранят пользовательские данные непосредственно в себе. Переменные ссылочных типов в качестве значения имеют управляемый указатель на то место, где лежат пользовательские данные.

А ссылка (ref) - это не про устройство переменных, как они хранят данные, а про способ передачи самих переменных: внутрь метода, из метода наружу, локально внутри метода.

По классическому определению, переменная - именованное место в памяти. Т.е. прежде всего место в памяти, а не имя.

int a = 10;
ref int b = ref a;
Тут a - имя переменной типа int, места в памяти, где лежит значение 10. b - тоже имя переменной типа int, места в памяти, где лежит значение 10.

a и b в этом примере - равнозначные имена для обращения к одному месту в памяти. Это одна и та же переменная по сути. Поэтому по поведению в коде имена a и b не должны отличаться.

Если смотреть не изнутри кода, а со стороны через рефлексию, то факты передачи переменной по значению и по ссылке отличить можно, экземпляры Type будут отличаться, но только не в случае локальных переменных - до них через рефлексию не добраться.

Страницы: 1 2 3 4
ФлеймФорумПрограммирование