Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> System.NullReferenceException was unhandled 
V
    Опции темы
Veve
  Дата 18.11.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Код

public struct Records
        {
            public string player_name;
            public string player_level;
            public string player_steps;
        }
public List<Records> players_list = new List<Records>();

public void save_if_is_record(string steps, string level)
        {
            Records  player= new Records();
            player.player_level=level;
            player.player_steps=steps;
            player.player_name=this.name;
            this.players_list.Add(player);
        }


Привет, подскажите пожалуйста, почему в этой строчке:
Код

this.players_list.Add(player);

Появляется ошибка: 
  System.NullReferenceException was unhandled
  Message="Object reference not set to an instance of an object."



PM MAIL ICQ Skype MSN   Вверх
Partizan
Дата 18.11.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Осмелюсь предположить, что players_list равен null  smile 


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Mephisto
Дата 18.11.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Veve, вроде как все нормально. 

А под дебагом не пробовал посмотреть что собственно имеет нулевой указатель?

Добавлено через 1 минуту и 45 секунд
Цитата(Partizan @  18.11.2008,  12:45 Найти цитируемый пост)
Осмелюсь предположить, что players_list равен null

вообще не должен, ибо явно указана строка инициализирующая его. Разве что попробовать написать:
Код

public readonly List<Records> players_list = new List<Records>();

тогда тяжелее будет его перетереть  smile 
PM   Вверх
Veve
Дата 18.11.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Да он null, а каким он должен быть первоначально,.. я просто в C# пару дней только программирую, поэтому извини если глупости спрашиваю.
Мне нужен список Игроков... Я хочу добавить нового... Делаю this.players_list.Add(player); 

попробовал использовать массив, вместо списка.. тоже самое...  smile 
public struct Records
        {
            public string player_name;
            public string player_level;
            public string player_steps;
        }
        public Records[] player_list;
        public void save_if_is_record(string steps, string level)
        {
            Records  player= new Records();
            player.player_level=level;
            player.player_steps=steps;
            player.player_name=this.name;
            player_list[0]=player;
        }

Это сообщение отредактировал(а) Veve - 18.11.2008, 11:51
PM MAIL ICQ Skype MSN   Вверх
Mephisto
Дата 18.11.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



ты ему где-то в другом месте null присваиваешь? 
PM   Вверх
Veve
Дата 18.11.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



не не присваиваю... в смысле.. я  думал, что он первоначально null=то есть пустой... В общем я адекватен smile
Под debugом player_list = null

Это сообщение отредактировал(а) Veve - 18.11.2008, 11:56
PM MAIL ICQ Skype MSN   Вверх
Mephisto
Дата 18.11.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



У тебя просто стоит явная инициализация поля:
Код

public List<Records> players_list = new List<Records>();


Но возможно ты его где-то перетираешь на null, например в конструкторе.

Если добавишь, как я написал, слово readonly, то после инициализации ты не сможешь поменять значение. Если данный вариант оправдан для тебя, то можешь поставить.
PM   Вверх
Veve
Дата 18.11.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Больше нигде ничего не меняю. Это точно.
поставил readonly всё тоже самое  smile 
PM MAIL ICQ Skype MSN   Вверх
Partizan
Дата 18.11.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Veve, показывай полный код всего проекта


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Veve
Дата 18.11.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Всего или хватит этого класса?  smile 

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Game
{
    [Serializable]
    public class Users
    {
        private string name;

        public Users()
        {
        }
        public void setName(string user_name)
        {
            this.name=user_name;
        }
        public string Name
        {
            get { return name; }
        }
        public struct Records
        {
            public string player_name;
            public string player_level;
            public string player_steps;
        }
        public readonly List<Records> players_list = new List<Records>();
        public void save_if_is_record(string steps, string level)
        {
            Records  player= new Records();
            player.player_level=level;
            player.player_steps=steps;
            player.player_name=this.name;
            this.players_list.Add(player);
        }
    }
}


PM MAIL ICQ Skype MSN   Вверх
Mephisto
Дата 18.11.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Код

    [Serializable]
    public class Users
    {
        private string name;
        public Users()
        {
        }
        public void setName(string user_name)
        {
            this.name=user_name;
        }
        public string Name
        {
            get { return name; }
        }
        public struct Records
        {
            public string player_name;
            public string player_level;
            public string player_steps;
        }
        public readonly List<Records> players_list;
        public void save_if_is_record(string steps, string level)
        {
            Records  player= new Records();
            player.player_level=level;
            player.player_steps=steps;
            player.player_name=this.name;
            this.players_list.Add(player);
        }
        public Users()
        {
            players_list = new List<Records>();
        }
    }

попробуй так. Хотя странно. Должно работать.  smile 
PM   Вверх
Veve
Дата 18.11.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Пробовал, не помогло... 
PM MAIL ICQ Skype MSN   Вверх
Partizan
Дата 18.11.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Veve, ты бы архив с проектом выложил...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Veve
Дата 18.11.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: нет
Всего: 13



Да, нет времени уже разбираться. Спасибо за помощь. 
Выход не был найден, просто поменял структуру программы.. 
PM MAIL ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.