Задать вопрос

Не изменяется поле структуры из статического метода, почему?

<code lang="cs">
  using System;

namespace Lerning {

    class MyClass {
        public string change;
    }

    struct MyStruct {
        public string change;
    }

    class Program {

        static void ClassTaker(MyClass myClass) {
            myClass.change = "изменено";
        }

        static void StruktTaker(MyStruct myStruckt) {
            myStruckt.change = "изменено";
        }

        public static void Main() {
            MyClass myClass = new MyClass();
            MyStruct myStruct;


            myClass.change = "не изменено";
            myStruct.change = "не изменено";

            Console.WriteLine(myStruct.change + " {0}", myClass.change);

            ClassTaker(myClass);
            StruktTaker(myStruct);

            Console.WriteLine(myStruct.change + " {0}", myClass.change);

            Console.ReadKey();
        }
    }

}
</code>


Почему не изменяется поле структуры?
  • Вопрос задан
  • 213 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Пригласить эксперта
Ответы на вопрос 2
ImmortalCAT
@ImmortalCAT
C# loving
Структура значимый тип, поэтому не меняет.
Почитайте про значимые и ссылочные типы данных!
Ответ написан
Комментировать
yarosroman
@yarosroman Куратор тега C#
C# the best
static void StruktTaker(ref MyStruct myStruckt) {
            myStruckt.change = "изменено";
        }


StruktTaker(ref myStruct);

Читаем про значимые и ссылочные типы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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