Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > как изменить состояние значения в словаре


Автор: hexzo 29.6.2011, 11:05
Вот например, мне нужно периодически лазить по своему словарю и изменять состояние объектов которые служат его элементами. Но я получаю только копию элемента. Можно конечно перезаписывать элемент на нужный, как в закомментированном кусочке, но это же не нормальный путь? Ведь как-то же должно быть можно получить ссылку на элемент коллекции и изменить его?  smile 

Код

using System;
using System.Collections.Generic;

  struct Atom
  {
    public string address;
    public string atime;
  }

  class Program
  {
    public static Dictionary<string, Atom> dic;
    static void Main(string[] args)
    {
      dic = new Dictionary<string, Atom>();
      dic.Add("1", new Atom());

      Atom tempatom = new Atom();
      dic.TryGetValue("1", out tempatom);
      tempatom.address = "999";

      //dic.Remove("1");
      //dic.Add("1", tempatom);

      Console.WriteLine("now dic[\"1\"].address => " + dic["1"].address);
      Console.ReadKey();
    }
  }

Автор: jonie 29.6.2011, 11:24
копию получаетет потому что используете сткутуры, а не классы. Структуры это типа значения. Заменив на класс получите ссылочные значения.

Автор: hexzo 29.6.2011, 12:17
Аааааааааа. Спасибо за этот маленький нюанс.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)