Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Jotun
60 / 61 / 44
Регистрация: 05.12.2014
Сообщений: 475
1

Не создаётся объект когда один из параметров null

14.09.2017, 10:41. Просмотров 349. Ответов 18
Метки нет (Все метки)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// создание объекта, 4-й параметр null - так ничего не происходит
FRequest request = new FRequest(Guid.Empty, guid, FatherRType.Skill, null, Skill, IsRepeat, IsTargetDead, PercentsMP, Send.RequestMagicSkillUse(Skill.id, false));
 
// Конструктор объекта:
 
        public FRequest(Guid loopGuid, Guid guid, FatherRType type, L2Creature target, L2Skill skill, bool isRepeat, bool isTargetDead, int percentsMP, string packet)
        {
            this.loopGuid = loopGuid;
            this.guid = guid;
            this.type = type;
            this.target = target;
            this.skill = skill;
            this.isRepeat = isRepeat;
            this.isTargetDead = isTargetDead;
            this.percentsMP = percentsMP;
            this.packet = packet;
        }
Если передать в качестве 4-го пораметра объект - то всё нормально. Ничего не моугу понять, почему так происходит....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2017, 10:41
Ответы с готовыми решениями:

Удаление объекта из листа, когда объект становится null
Всем привет. Есть класс, допустим это клетка на поле class Foo { ...

Какое событие происходит когда в форме один объект входит в область другого объекта?
Добрый день форумчане. пытаюсь создать мини-игрульку в С#. В общем PictureBox...

Сервер отправляет объект не null, а клиент принимает null
Помогите пожалуйста! У меня в клиент-серверном приложении творится что-то...

Не создаётся объект класса
---------------------------------------Address.h--------------------------------...

Почему создаётся пустой объект
Всем привет. Я новичок в Unity, но неплохо знаю C#. Я пишу вот такой скрипт....

18
SeIZVeIZ
681 / 627 / 266
Регистрация: 08.02.2014
Сообщений: 1,941
Завершенные тесты: 3
14.09.2017, 10:45 2
Либо этот объект не может быть null, либо что-то ещё, в любом случае, отладчик Вам в помощь, быстрее будет самому по коду пройтись и посмотреть, что и как происходит.
0
IamRain
1347 / 1213 / 375
Регистрация: 02.08.2011
Сообщений: 3,533
14.09.2017, 10:48 3
Как понимать фразу "Не создается объект" ?
Судя по вашему конструктору, исключений в нем быть не может. Значит создавая объект, должна возвращаться ссылка на него.
Цитата Сообщение от Jotun Посмотреть сообщение
так ничего не происходит
А что должно происходить?
0
Jotun
60 / 61 / 44
Регистрация: 05.12.2014
Сообщений: 475
14.09.2017, 12:56  [ТС] 4
C#
1
2
3
4
5
6
7
Vars.form.WriteChat("0", L2ChatType.General); // метод вроде записи в лог
if (!IsReady) return;
Vars.form.WriteChat("1", L2ChatType.General);
if (Vars.FRequestList.ContainsGuid(guid)) return;
Vars.form.WriteChat("2", L2ChatType.General);
FRequest request = new FRequest(Guid.Empty, guid, FatherRType.Skill, null, Skill, IsRepeat, IsTargetDead, PercentsMP, Send.RequestMagicSkillUse(Skill.id, false));
Vars.form.WriteChat("3", L2ChatType.General);
Так вот цифра три - не пишется, каким-то образом метод обрывается на создании объекта
Если я вместо null вставлю объект - то всё пишется как нодо и работает.

Может ли это происходить из-за того что проблемный параметр это объект абстрактного класса?

Добавлено через 2 минуты
Выход из ситуации есть - создание объекта пустышки, но мне не понятно что это за фигня
0
SeIZVeIZ
681 / 627 / 266
Регистрация: 08.02.2014
Сообщений: 1,941
Завершенные тесты: 3
14.09.2017, 13:06 5
Jotun, а как у Вас связаны 6 и 7 строка вообще? по коду они друг от друга не зависят
1
Jotun
60 / 61 / 44
Регистрация: 05.12.2014
Сообщений: 475
14.09.2017, 13:08  [ТС] 6
это всё находится внутри одного метода, значит при вызове этого метода должно выполнятся построчно, нет?
цифры обозначают этапы прохождения метода, два пишется - три уже нет
0
Usaga
Эксперт .NET
5096 / 3435 / 608
Регистрация: 21.01.2016
Сообщений: 13,538
Завершенные тесты: 2
14.09.2017, 13:10 7
Jotun, как насчёт того, чтобы воспользоваться отладчиком?
0
IamRain
1347 / 1213 / 375
Регистрация: 02.08.2011
Сообщений: 3,533
14.09.2017, 13:12 8
Jotun, на строке номер 6 вы создали объект, каким образом этот объект будет связан с выводом сообщения в чат в строке номер 7?
0
Usaga
Эксперт .NET
5096 / 3435 / 608
Регистрация: 21.01.2016
Сообщений: 13,538
Завершенные тесты: 2
14.09.2017, 13:23 9
IamRain, вангую: у объекта по ссылке form есть состояние, которое меняется на невалидное в строке №5. Т.е. до того, как просиходит создание объекта класса FRequest вывод данных уже не работает.
1
IamRain
1347 / 1213 / 375
Регистрация: 02.08.2011
Сообщений: 3,533
14.09.2017, 13:23 10
Есть вероятность, что при создании объекта исключение вываливается в этом методе:
Send.RequestMagicSkillUse(Skill.id, false) при передаче последнего параметра. Соответственно, следующая строка уже не выполняется. Других вариантов я тут не вижу.
1
Usaga
Эксперт .NET
5096 / 3435 / 608
Регистрация: 21.01.2016
Сообщений: 13,538
Завершенные тесты: 2
14.09.2017, 13:25 11
Да, тоже вариант.

Что же там на самом деле, нам скажет мистер Debugger.
0
Jotun
60 / 61 / 44
Регистрация: 05.12.2014
Сообщений: 475
14.09.2017, 13:47  [ТС] 12
Цитата Сообщение от Usaga Посмотреть сообщение
Jotun, как насчёт того, чтобы воспользоваться отладчиком?
А что спрашивать у отладчика, ошибки то не возникает. Я попробую поставить брек-поинты, но прямо сейчас не получится - для работы программы нужно соединение с сервером, а он не работает.
Цитата Сообщение от Usaga Посмотреть сообщение
вангую: у объекта по ссылке form есть состояние, которое меняется на невалидное в строке №5. Т.е. до того, как просиходит создание объекта класса FRequest вывод данных уже не работает.
объект по ссылке form - это главное окно программы, никакго состояния не меняется.
Цитата Сообщение от IamRain Посмотреть сообщение
Есть вероятность, что при создании объекта исключение вываливается в этом методе:
Send.RequestMagicSkillUse(Skill.id, false) при передаче последнего параметра. Соответственно, следующая строка уже не выполняется. Других вариантов я тут не вижу.
Никакого исключения не вываливыется, в том то и прикол. Метод Send - отправляет пакет через сокет, и возвращает string - Hex в виде строки. False - означает что посылать не надо, а только верни строку.

И ещё раз - если я вместо null вставлю готовый объект - всё работает! Почему-то не принимает именно null
0
IamRain
1347 / 1213 / 375
Регистрация: 02.08.2011
Сообщений: 3,533
14.09.2017, 13:50 13
Цитата Сообщение от Jotun Посмотреть сообщение
Почему-то не принимает именно null
Методом исключения остается только причина, которую указал Usaga,
Цитата Сообщение от Usaga Посмотреть сообщение
вангую: у объекта по ссылке form есть состояние, которое меняется на невалидное в строке №5
А причину нам
Цитата Сообщение от Usaga Посмотреть сообщение
скажет мистер Debugger.
0
Jotun
60 / 61 / 44
Регистрация: 05.12.2014
Сообщений: 475
14.09.2017, 13:54  [ТС] 14
Ладно я попробую ещё варианты, но нужно подождать когда поднимится сервер, буду держать в курсе
0
Usaga
Эксперт .NET
5096 / 3435 / 608
Регистрация: 21.01.2016
Сообщений: 13,538
Завершенные тесты: 2
14.09.2017, 17:29 15
Цитата Сообщение от Jotun Посмотреть сообщение
Ладно я попробую ещё варианты
Да какие, нафиг, варианты могут быть? Ошибка это любое отклонение от задуманного поведения программы, а не только креш с грибком ядерного взрыва.

Пройдитесь по своему приложению с отладчиком и лично посмотрите как имено работает ваше приложение. Не нужно тут гадать и варианты разные продумывать.
0
Jotun
60 / 61 / 44
Регистрация: 05.12.2014
Сообщений: 475
16.09.2017, 13:02  [ТС] 16
Вобщем ничего не смог я понять из дебагера что происходит
0
Usaga
Эксперт .NET
5096 / 3435 / 608
Регистрация: 21.01.2016
Сообщений: 13,538
Завершенные тесты: 2
16.09.2017, 17:55 17
Jotun, посмотрите обучающие видео, что ли... Умение пользоваться отладчиком критично для программиста.
0
Jotun
60 / 61 / 44
Регистрация: 05.12.2014
Сообщений: 475
16.09.2017, 19:47  [ТС] 18
Нашёл ошибку:
C#
1
2
tx = target.X;
ty = target.Y;
Непонятно почему не было NullReference Exeption если target = null
0
Usaga
Эксперт .NET
5096 / 3435 / 608
Регистрация: 21.01.2016
Сообщений: 13,538
Завершенные тесты: 2
17.09.2017, 09:50 19
Jotun, да всё было. Просто у вас где-то уровнем выше стоит try\catch с пустым catch.

Добавлено через 3 часа 7 минут
Или дело происходит в отдельном потоке, откуда исключения сами не пробрасываются в основной поток.
0
17.09.2017, 09:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2017, 09:50

не создаётся java-объект CLOB
Необходимо перегнать джавовский String в оракловский CLOB. В пакете...

Не создаётся объект string на ровном месте! Почему?
Ребята, чё-то я не пойму: #include <string> #include <stdio.h> #include...

При присваивании объекта создаётся ссылка на объект, НО
Доброго. На официальном сайте сказано: То есть присваивается ссылка на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru