Структура C# без параметра outC#

Место общения программистов C#
Ответить
Anonymous
 Структура C# без параметра out

Сообщение Anonymous »

Наверное, это очень простой и глупый вопрос, но мне просто нужна помощь в его понимании. Я сохраняю структуру в словаре и хочу получить структуру, изменить некоторые значения, а затем автоматически обновить ее в словаре, но поведение странное.

Код: Выделить всё

public struct Test
{
public int a;
}

public class Tester
{
public static Dictionary d = new Dictionary();

public static bool GetTest(int position, out Test test)
{
if (d.ContainsKey(position)) {
test = d[position];
return true;
} else {
test = new Test();
return false;
}
}
}
Когда я пытаюсь получить структуру из dict и изменить значения, она не обновляется.

Код: Выделить всё

        Test n = new Test();
n.a = 10;
Tester.d.Add(n.a, n);

Tester.GetTest(10, out Test t1);
Debug.Log(t1.a);

t1.a = 20;

Tester.GetTest(10, out Test t2);
Debug.Log(t2.a);
Постоянно показывает 10. Итак, когда я использую параметр out, он создает копию структуры в dict и возвращает ее? Значит, мне нужно написать дополнительную строку, чтобы снова обновить словарь, верно?
Каков был бы простой способ получить структуру и просто обновить ее значение в словаре без добавления дополнительных строк?< /p>
РЕДАКТИРОВАТЬ:
Я мог бы сделать это...

Код: Выделить всё

Tester.d[position].a = 20;
Но есть ли способ сделать это с помощью метода? Где я могу получить всю структуру, отредактировать значение, и оно автоматически обновится в словаре? Извините за глупый вопрос, я просто не понимаю такого поведения.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -parameter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»