Ошибка: ссылка на объект не установлена ​​на экземпляр объекта - PullRequest
2 голосов
/ 21 сентября 2011

Я разрабатываю приложение, используя ASP.NET в c #, и у меня возникает следующая ошибка:

Ссылка на объект не установлена ​​на экземпляр объекта.

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

и это мой фрагмент кода:

Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase);

Он тестировал у меня локально, код был в порядке, но он столкнулся с этой ошибкой, когда тот же код был перенесен в мою виртуальную среду..

Полагаю, возможно, это связано с инфраструктурой dot net в моей виртуальной среде.

Пожалуйста, помогите и поблагодарите вас заранее.

Ответы [ 5 ]

4 голосов
/ 21 сентября 2011

Скорее всего parts[0] равно нулю.Эта ошибка эквивалентна исключению NullPointerException в Java.

Попробуйте установить для локальной переменной значение parts[0].ToString(); в предыдущей строке и посмотрите, не было ли выбрано исключение из этой строки.

Я рекомендуювыполнять матч, только если у вас есть что выполнить:

if(parts[0] != null){
    Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase);
}
3 голосов
/ 21 сентября 2011

Из исключений, которые вы получаете, похоже, что либо parts, либо parts[0] равно нулю.

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

object part = parts[0];
if (part == null)
{
    // part is null, either handle with default value or error.
}

Match matchNew = ...;
2 голосов
/ 21 сентября 2011

Скорее всего, это ваш массив "parts", если его длина равна 0, то он потерпит неудачу. Сначала проверьте его длину.

1 голос
/ 21 сентября 2011

замените код следующим:

if(parts != null && parts.Length>0)
{    

    if(parts[0] != null)
    {
       Match matchNew = Regex.Match(parts[0].ToString(), @"([0]\.\d*)|[1]\.[0]$", RegexOptions.IgnoreCase);
    }
}

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

0 голосов
/ 21 сентября 2011

Кажется, что в вашем массиве "parts" нет элементов, и поэтому parts[0] имеет значение null, и исключение возникает из-за .ToString(), потому что null не может быть преобразован в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...