none
Не получается с Dictionary в поле RRS feed

  • Вопрос

  • Подскажите, пожалуйста, что не так с этим кодом:

     

      public class A
      {
        public Dictionary<int, string> dic { get; set; }
      }
    
      class Program
      {
        public static void Main()
        {
          A a = new A();
          a.dic.Add(1, "a");
    
        }
      }
    

     

    Ошибка вот такая:

    System.NullReferenceException was unhandled

      Message=Object reference not set to an instance of an object.

      Source=ConsoleApplication2

     

    5 ноября 2010 г. 19:42

Ответы

  • Dictionary – ссылочный тип. Значение свойства dic по умолчанию – null, т.е. dic не ссылается на существующий объект Dictionary.
    Перед обращением к свойствам и методам объекта, на который ссылается dic, сам объект нужно создать. Например, при создании объекта класса А:
    public class A
    {
        public A()
        {
            this.dic = new Dictionary<int, string>();
        }

        public Dictionary<int, string> dic { get; set; }
    }

    class Program
    {
        public static void Main()
        {
            A a = new A();
            a.dic.Add(1, "a");
        }
    }
    6 ноября 2010 г. 10:25
    Модератор

Все ответы

  • Dictionary – ссылочный тип. Значение свойства dic по умолчанию – null, т.е. dic не ссылается на существующий объект Dictionary.
    Перед обращением к свойствам и методам объекта, на который ссылается dic, сам объект нужно создать. Например, при создании объекта класса А:
    public class A
    {
        public A()
        {
            this.dic = new Dictionary<int, string>();
        }

        public Dictionary<int, string> dic { get; set; }
    }

    class Program
    {
        public static void Main()
        {
            A a = new A();
            a.dic.Add(1, "a");
        }
    }
    6 ноября 2010 г. 10:25
    Модератор
  • спасибо, а ключевое слово this обязательно использовать? а то у меня и без него работает...
    6 ноября 2010 г. 10:36
  • Необязательно :)
    6 ноября 2010 г. 10:57
    Модератор