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

<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>


Почему не изменяется поле структуры?
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
ImmortalCAT
@ImmortalCAT
C# loving
Структура значимый тип, поэтому не меняет.
Почитайте про значимые и ссылочные типы данных!
Ответ написан
Комментировать
yarosroman
@yarosroman Куратор тега C#
C# the best
static void StruktTaker(ref MyStruct myStruckt) {
            myStruckt.change = "изменено";
        }


StruktTaker(ref myStruct);

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

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

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