Как добавить значение в публичное свойство типа List <string>в c #? - PullRequest
2 голосов
/ 07 марта 2009
private List<string> _Baseline = new List<string>();

public List<string> Baseline 
{
    get { return _Baseline; }
    set { _Baseline = value; }
}

Как я могу установить это свойство? Это не позволяет мне добавлять используя метод add; он выдает ошибку "ссылка на объект отсутствует".

Ответы [ 5 ]

6 голосов
/ 07 марта 2009

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

Если у вас сложное выражение, разделите его. Например, измените ObjectA.Prop.Other.Xyz.Add (..) на:

SomeClass a = ObjectA.Prop;
SomeClass2 b = a.Other;
SomeClass3 c = b.Xyz;
c.Add(...)

таким образом вы быстро найдете, где находится нулевая ссылка.

1 голос
/ 07 марта 2009

Есть 3 варианта:

  1. ваш list<string> равен нулю
  2. объект, содержащий ваш list<string>, равен нулю
  3. элемент, который вы вставляете, является нулевым

1 адресуется при назначении ему нового Списка

2 и 3 мы не можем установить по коду, который вы публикуете здесь.

если вы не собираетесь разрешать присваивание нового объекта списка за пределами вашего класса, то вам, как отмечалось в другом месте, не нужен установщик. Вы можете либо удалить его, либо объявить его частным или защищенным, как это ....

public List<string> Baseline 
{
    get { return _Baseline; }
    protected set { _Baseline = value; }
}
1 голос
/ 07 марта 2009

Вы инициализируете класс (используя new), который содержит это свойство перед использованием?

Возможны два случая (если ваш код относится к классу MyClass):

//External code:
MyClass x = new MyClass();
x.Baseline = null; // Somewhere it'll be set to null.
x.Baseline.Add("Something"); // NullReferenceException

Или:

//External code:
MyClass x = null; // Somewhere the class itself is set to null.
x.Baseline.Add("Something"); // NullReferenceException
0 голосов
/ 02 марта 2016

Я получил ту же ошибку, так как объявление было неправильным:

private List<string> _Baseline;    - incorrect
private List<string> _Baseline = new List<string>();    - correct
0 голосов
/ 07 марта 2009

Возможно, вам понадобится IList:

private IList<string> _Baseline = new List<string>();

public IList<string> Baseline 
{
    get { return _Baseline; }
    set { _Baseline = value; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...