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, а с другой стороны - строка иммутабельна. потому любая попытка ее изменить будет на самом деле создавать измененную копию строки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы