Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
7 / 4 / 0
Регистрация: 21.02.2018
Сообщений: 153
1

System.NullReferenceException

09.05.2018, 16:21. Показов 1193. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.дан код регистрации пользователя.вот отрывок из кода:
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
static class UserManager
    {
        private static User[] _users = new User[10];
 
         
        static public int Register(User user)
        {
            for(int i = 0; i < _users.Length; i++)
            {
                _users[i] = new User();
            }
 
            if (user.Username == null && user.Password == null)
            {
                return -1;
            }
 
            for (int i = 0; i < _users.Length; i++)
            {
                if (_users[i].Username == user.Username)
                {
                    return -2;
                }
            }
 
            for (int i = 0; i < _users.Length; i++)
            {
                if (_users[i].Username == null && _users[i].Password == null)
                {
                    _users[i].Username = user.Username;
                    _users[i].Password = user.Password;
                    return 0;
                }
 
            }
 
            return -3; 
        }
на массиве _users[i].Username _users[i].Password выдает ошибку-- System.NullReferenceException.
Я прочитал что при создании вот этого массива --- private static User[] _users = new User[10] выделяется память только под массив и надо и под элементы тоже. я создал цикл ---
C#
1
2
3
4
 for(int i = 0; i < _users.Length; i++)
            {
                _users[i] = new User();
            }
но что то не идет(( подскажите пожалуйста как надо правильно
Миниатюры
System.NullReferenceException  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2018, 16:21
Ответы с готовыми решениями:

System.NullReferenceException
Помогите разобраться. Вот кусок кода. Найти все коробки, поступившие от заданного поставщика...

System.NullReferenceException
public static byte Encrypt(byte data, string pass) { byte key =...

System.NullReferenceException ошибка в массиве
функция GetLinkInf if (site == &quot;Content&quot;) { foreach (var nd in...

Почему вылетает System.NullReferenceException?
Привет народ ) есть класс using MaxAll.Facebooks; using MaxAll.View; using System.Threading;...

3
189 / 166 / 101
Регистрация: 14.03.2018
Сообщений: 426
09.05.2018, 17:18 2
Лучший ответ Сообщение было отмечено Гиоргий как решение

Решение

Гиоргий, попробуйте следующий код:
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
static class UserManager
{
    private static User[] _users = new User[10];
 
    static public int Register(User user)
    {
        if (user == null || user.Username == null || user.Password == null)
        {
            return -1;
        }
 
        for (int i = 0; i < _users.Length; i++)
        {
            if (_users[i] == null) break;
                        
            if (_users[i].Username == user.Username)
                return -2;
        }
 
        for (int i = 0; i < _users.Length; i++)
        {
            if (_users[i] == null)
            {
                _users[i] = user;
 
                return 0;
            }
        }
 
        return -3;
    }
Ну а вообще, следовало бы использовать список (List) вместо массива, так как он расширяемый и всегда ясно сколько в нём элементов (свойство Count), таким образом не нужно перед каждой вставкой элемента убеждаться в наличии свободного места. Кроме того, вместо числовых кодов лучше возвращать элементы перечислений либо, в случае ошибок, генерировать исключения, так как в будущем будет трудно разбираться, что такое -1, -2 и -3.
1
7 / 4 / 0
Регистрация: 21.02.2018
Сообщений: 153
09.05.2018, 17:28  [ТС] 3
Цитата Сообщение от VladPVS Посмотреть сообщение
Ну а вообще, следовало бы использовать список (List) вместо массива
Мы еще не проходили List, и не могу его использовать
0
7 / 4 / 0
Регистрация: 21.02.2018
Сообщений: 153
12.05.2018, 12:55  [ТС] 4
Цитата Сообщение от VladPVS Посмотреть сообщение
C#
1
2
3
4
5
6
for (int i = 0; i < _users.Length; i++)
 {
 if (_users[i] == null) break;
if (_users[i].Username == user.Username)
return -2;
 }
я вот тут с break не догадался сделать. спасибо за помощь
0
12.05.2018, 12:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2018, 12:55
Помогаю со студенческими работами здесь

Освобождение ресурсов и ошибка System.NullReferenceException
Я написал класс: public class Database Который в веду сложности создания, имеет в конструкторе...

System.NullReferenceException при добавлении в AVLTree
using System; using System.Collections.Generic; namespace MyCollections.Generic //Класс...

An unhandled exception of type 'System.NullReferenceException' occurred
Почему такое вылазит при простейшем коде? Что я делаю не так? string PAs = null; for (int a =...

Почему System.NullReferenceException в массиве обьектов класса?
кто может подсказать , а то я что то не пойму почему выдает исключение :...


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

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