NullReferenceException при доступе к свойству за пределами конструктора - PullRequest
0 голосов
/ 06 августа 2009

В этом классе я устанавливаю elp в ElType в конструкторе.

Я могу получить доступ к свойствам elp нормально, когда в конструкторе (бит // ... - это то место, где я обращаюсь к свойствам elp), но когда я пытаюсь получить доступ к elp другим способом - ucp() - моя программа падает с NullReferenceException.

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

[Serializable]
public class ElBase : RectangleNode
{
    public ElementParameters elp;

    public ElBase(ElementParameters ElType)
    {
        this.elp = ElType;

        // ...
    }

    private void ucp()
    {
        int i = 0;

        if (this.elp.HasInput)
        {
            // ...
        }
    }

Ответы [ 2 ]

5 голосов
/ 06 августа 2009

Или:

  1. elp имеет значение null, возможно, даже в конструкторе, если там нет проверки на ноль
  2. Получатель свойства HasInput выбрасывает NullReferenceException на основе кода внутри него.
  3. О, дорогой : elp является общедоступным полем . Все может установить его на ноль. : o Это должно быть номер 1, но я посмотрел прямо мимо него, так как никто не делает общедоступные поля, следовательно, это никогда не проблема.
1 голос
/ 06 августа 2009

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

...