Luffy1
@Luffy1
Student, Junior .NET programmer, C#, JS, HTML/CSS

Как работают передачи разных ссылочных типов в качестве параметра в метод и правильно ли я понял, как устроен массив в памяти?

Доброго времени суток! Сейчас экспериментирую над передачей объектов разных ссылочных типов в качестве параметра в метод и разбираюсь с их поведением внутри метода. Экспериментируя, я также разбирался с работой массивов при передаче их в качестве параметра, но я понял их работу в методе, только разобравшись как они устроены в памяти. И вот два(кому я вру, три) вопроса у меня возникло во время всего экспериментирования:
1. Правильно ли я понял поведения массива, объектов ссылочных типов и делегата при передачи их в качестве параметра?
Если нет, то объясните, пожалуйста.
https://photos.app.goo.gl/84wbQj2VszqfDWUE7

2. Как работает место, выделенное мною в коде на 56 строке?
https://photos.app.goo.gl/mo3YMBdPJYfWPu4e7

3. Правильно ли я понял, как устроен массив в памяти?
Если нет, то объясните, как?
https://photos.app.goo.gl/ggacpoani1Seznxj8 - массив в памяти
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
yarosroman
@yarosroman Куратор тега C#
C# the best
https://youtu.be/KbuJdkPLAjw посмотрите это, многое на место встанет.

Ссылочный поэтому и называется так, как передается ссылка в метод, а не клонируется перед вызовом, в отличии от значимых типов.
Ответ написан
Комментировать
ayazer
@ayazer
Sr. Software Engineer
ну скопировали бы код, есть же подсветка синтаксиса на тостере. Пытаться что-то разобрать на скриншотах - боль. Один на вид еще и пожат до состояния что сложно что-то разобрать. Ну а еще лучше - сформулировать конкретный вопросы, и задавать их отдельно. Сложно за один раз ответить на 5 скриншотов с кодом и рисунками.

Но по тому что я заметил - вам в голове нужно уложить пару фактов. И тогда все станет на свои места.

1) все есть object
2) все value type (честно, впал в ступор пытаясь вспомнить корректный перевод) - тоже наследуются от object (точнее от ValueType, который уже наследуется от object). А на уровне компилятора есть проверка наследуется ли класс от ValueType, чтоб знать как с ним работать дальше (т.е. где хранить и как передавать)
3) с одной стороны - строка тоже object, а с другой стороны - строка иммутабельна. потому любая попытка ее изменить будет на самом деле создавать измененную копию строки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы