sailor
1

Ошибка: Необработанное исключение типа "System.NullReferenceException"

19.05.2012, 21:23. Показов 12573. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При компиляции происходит "Необработанное исключение типа "System.NullReferenceException" произошло в RGame.exe
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта."

При отрисовке значение "blocks" в этой строке показывается как null.
C#
1
2
spriteBatch.Begin();
            foreach (Block block in blocks)
В чем может быть проблема?

Код:
Game1.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.IO;
 
namespace RGame
{
 
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
 
        Texture2D blockTexture1;
        Texture2D blockTexture2;
 
        List<Block> blocks;
 
 
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
 
            this.graphics.PreferredBackBufferWidth = 500;
            this.graphics.PreferredBackBufferHeight = 500;
 
        }
 
        protected override void Initialize()
        {
            base.Initialize();
        }
 
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
 
            blockTexture1 = Content.Load<Texture2D>("textures/target");
            blockTexture2 = Content.Load<Texture2D>("textures/mirror");
        }
 
        void CreateLevel()
        {
            blocks = new List<Block>();
            string[] lines = File.ReadAllLines("levels/level1.txt");
 
            int x=0;
            int y=0;
            foreach (string line in lines)
            {
                foreach (char c in line)
                {
                    Rectangle rect = new Rectangle(x, y, 50, 50);
                    if (c == 'X')
                    {
                        Block block = new Block(rect, blockTexture1);
                        blocks.Add(block);
                    }
                    if (c == 'Y')
                    {
                        Block block = new Block(rect, blockTexture2);
                        blocks.Add(block);
                    }
                }
                x += 50;               
            }
            x = 0;
            y += 50;
        }
 
 
        protected override void UnloadContent()
        {
 
        }
 
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();
 
            base.Update(gameTime);
        }
 
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
 
            spriteBatch.Begin();
            foreach (Block block in blocks)
            {
                block.Draw(spriteBatch);
            }
            spriteBatch.End();
 
            base.Draw(gameTime);
        }
    }
}
Block.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
 
namespace OOPKurs
{
    class Block
    {
        public Rectangle Rect { get; set; }
 
        Texture2D texture;
 
        public Block(Rectangle rect, Texture2D texture)
        {
            this.Rect = rect;
            this.texture = texture;
        }
 
        public void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(texture, Rect, Color.White);
        }
    }
}
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2012, 21:23
Ответы с готовыми решениями:

Исключение NullReferenceException: как исправить код?
1)Как правильно написать 49 строку? NullReferenceException: Object reference not set to an...

Необработанное исключение типа System.NullReferenceException
Ребята, помогите. решил написать простенький плеер. Но вот при открытии файла или даже при нажатие...

При запуске программы ошибка Необработанное исключение типа "System.NullReferenceException"
При запуске программы выбивает ошибку Необработанное исключение типа...

Ошибка в проекте: "Необработанное исключение типа "System.NullReferenceException" в WpfApplication8.exe"
Доброго времени суток, прошу помочь с данной проблемой выдаёт ошибку &quot;Необработанное исключение...

Потоки Thread: Необработанное исключение типа "System.NullReferenceException"
Такова проблема thrListener = new Thread(KeepListening); thrListener.Start(); ... public...

4
44 / 45 / 15
Регистрация: 11.08.2010
Сообщений: 226
20.05.2012, 22:15 2
Вы нигде не вызываете CreateLevel
Его надо вызывать в LoadContent.
1
sailor
20.05.2012, 22:41 3
Спасибо, не углядел.
2 / 2 / 0
Регистрация: 26.12.2015
Сообщений: 79
09.02.2016, 12:56 4
Цитата Сообщение от Heisenberg Посмотреть сообщение
Вы нигде не вызываете CreateLevel
Его надо вызывать в LoadContent.
А вот с этого момента можно по подробней
0
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
09.09.2016, 11:34 5
Добрый день. Такая же ситуация.
Класс
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
namespace HomeTask06092016
{
    class University
    {
       public University()
        {
           
        }
        //private List<Student> Students = new List<Student>();
        private List<Group> groups = new List<Group>();
        // Property for groups;
        public List<Group> Groups { get; set; } 
        private List<Teacher> teachers = new List<Teacher>();
        // Property for teachers;
        public List<Teacher> Teachers { get; set; } 
        private List<Subject> subjects = new List<Subject>();
        // Property for subjects;
        public List<Subject> Subjects { get; set; }
 
        public void AddStudent(Student s, int groupIndex)
        {
            groups[groupIndex].Students.Add(s);
        }
 
 
        public void AddGroup(Group g)
        {
            groups.Add(g);
        }
 
        public void AddSubject(Subject s)
        {
            subjects.Add(s);
        }
 
        public void AddTeacher(Teacher t)
        {
            teachers.Add(t);
        }
 
 
        public void RemoveGroup(int groupIndex)
        {
            groups[groupIndex].Students.Clear();
            groups.RemoveAt(groupIndex);
 
        }
 
        public void RemoveStudent(int groupIndex, int studentIndex)
        {
            groups[groupIndex].Students.Clear();
            groups[groupIndex].Students.RemoveAt(studentIndex);
        }
 
        public void RemoveTeacher(int teacherIndex)
        {
            teachers.RemoveAt(teacherIndex);
 
        }
 
        public void RemoveSubject(int subjectIndex)
        {
            subjects.RemoveAt(subjectIndex);
 
        }
 
        //public Student this[string groupName][string studentName]{}
        // Indexer;
        public Student this[string groupName, string studentName] 
        {
            get
            {
                foreach (var g in groups)
                {
                    if (g.Name == groupName)
                        foreach (var s in g.Students)
                        {
                            if (s.Name == studentName)
                            {
                                return s;
                            }
                        }
                }
                return null; 
            }
            set
            {
                for (int i = 0; i < groups.Count; i++)
                {
                    if (groups[i].Name == groupName)
                    {
                        for (int j = 0; j < groups[i].Students.Count; j++)
                        {
                            if (groups[i].Students[j].Name == studentName)
                                groups[i].Students[j] = value;
                        }
                    }
 
                }
 
            }
        }
        public string GroupOf(Student s) {
            foreach (var g in groups)
            {
                foreach (var st in g.Students)
                {
                    if (s == st)
                        return g.Name;
                }
            }
            return null;
        }
    }
}

Класс студент.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace HomeTask06092016
{
    class Student
    {
        public string Name { set; get; }
 
        public override string ToString() 
        {
            return Name;
        }
 
        private List<Subject> subjects = new List<Subject>();
        public List<Subject> Subjects { get; set; } // Property for subjects.
    }
}
Main
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace HomeTask06092016
{
    class Program
    {
        static void Main(string[] args)
        {
            /*           
            University group = new University();
            University u = new University();
            //u.AddStudent(group);
            //u["Vasya"].Name = "Petya"; // проверка;
            Console.Read();*/
            University targetUnivercity = new University();
            Group f = new Group(),s = new Group();
            f.Name = "PST"; s.Name = "ELT";
            targetUnivercity.AddGroup(f);
            targetUnivercity.AddGroup(s);
            Student u = new Student(); Student i = new Student();
            u.Name = "Petr";
            i.Name = "Gucci Mane";
            Console.WriteLine(u.Name + " " + i.Name);
            targetUnivercity.AddStudent(u, 1);
            targetUnivercity.AddStudent(i,2);
            Console.WriteLine(targetUnivercity.GroupOf(i));
            Console.Read();
 
        }
 
    }
}
Ругается на эту строку.
C#
1
2
3
4
 public void AddStudent(Student s, int groupIndex)
        {
            groups[groupIndex].Students.Add(s);
        }
Не могу понять, почему программа крэшется. Где-то null висит.
0
09.09.2016, 11:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2016, 11:34
Помогаю со студенческими работами здесь

Необработанное исключение типа "System.NullReferenceException" в SolidWorksWork.exe
Добрый день, подскажите пожалуйста! Пишу программу, которая создает объект в SW, но когда пытаюсь...

Необработанное исключение типа "System.NullReferenceException" при работе с WebBrowser
Доброго времени суток! Срочно понадобилась программа. Опыта в VS не имею, посмотрел урок по...

Необработанное исключение типа "System.NullReferenceException"
private void button1_Click(object sender, EventArgs e) { ...

Необработанное исключение типа "System.NullReferenceException"
Здравствуйте! Учу C#. Сейчас на этапе классов. Пробовал создавать объекты и заполнять их разными...

Необработанное исключение типа "System.NullReferenceException"
Добрый день, создаю два класса, в одном определяются поля покупка и цена, в другом объект ТList...

Необработанное исключение типа "System.NullReferenceException"
Пожалуйста,помогите решить проблему. Ошибка возникает в Enqueue. using System; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru