|
0 / 0 / 0
Регистрация: 09.02.2019
Сообщений: 9
|
|||||||||||
== null возвращает неверное значение14.11.2023, 18:03. Показов 665. Ответов 10
Добрый день,
пишу свою реализацию Octree для игры, и сталкнулся с проблемой из-за который мой код не корректно работает. Чтобы коротко описать проблему я написал класс который её хорошо показывает: Имеется простой Generic класс, который хранит данные. И есть две функции, одна проверяет на null а другая возвращает данные
Проблема в том что если я получаю data через GetData() и проверяю на null, то получаю true, то есть что данных нет, хотя они там имеются. Это происходит только с T, если в классе напрямую нужный тип использовать,то всё работает корректно. Я давно на C# пишу, но я либо туплю, либо у меня какие то пробелы в знаниях и я не совсем понимаю почему сравнение на null в этих 2х случаях работает не одинаково.
Явное указание через where что T это class тоже не помогло
0
|
|||||||||||
| 14.11.2023, 18:03 | |
|
Ответы с готовыми решениями:
10
GetProperty() возвращает null как я понял Извлечение внедрённых ресурсов (GetManifestResourceStream возвращает null)
|
|
643 / 338 / 139
Регистрация: 19.10.2013
Сообщений: 1,209
|
|||||||||||
| 14.11.2023, 19:52 | |||||||||||
|
переменная b у вас как создается? Если так:
а для того чтобы метод сработал, то сделайте так
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 09.02.2019
Сообщений: 9
|
||||||
| 14.11.2023, 19:57 [ТС] | ||||||
|
Да, создаётся через new
0
|
||||||
|
643 / 338 / 139
Регистрация: 19.10.2013
Сообщений: 1,209
|
||||
| 14.11.2023, 20:14 | ||||
|
0
|
||||
|
0 / 0 / 0
Регистрация: 09.02.2019
Сообщений: 9
|
||
| 14.11.2023, 21:04 [ТС] | ||
|
Функция IsDataNull() как раз таки возвращает правильный ответ (false), потому что обьект имеется.
(GetData() == null) проверяет по сути тоже самое что и IsDataNull(), но возвращает true, что не верно
0
|
||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
||
| 14.11.2023, 22:00 | ||
|
У меня выдает
0
|
||
|
0 / 0 / 0
Регистрация: 09.02.2019
Сообщений: 9
|
|||||||
| 14.11.2023, 22:13 [ТС] | |||||||
Я нашёл причину когда выводится false true. Я делаю проект в Unity и класс Block наследуется от MonoBehaviour.
0
|
|||||||
|
|
||||||||||||||||||||||
| 14.11.2023, 22:39 | ||||||||||||||||||||||
GetData() возращает НЕ null? А ещё.... ух, с чего бы начать? =)Во-первых: <T> без каких либо ограничений. Т.е. это может быть как struct, так и class. А с ними принципиально разные ситуации. class -- сылочный тип, который может быть null (как писали выше), так и существующим объектом.
default (ну а null нам не даст указать компилятор)
Nullable (что как бы структура), который имеет перегрузку позволяющую сравнить с null и получить true
Value == null, т.к. всё будет приводится к object. А значит возможны такие приколы, когда значение внутри не меняется.
1
|
||||||||||||||||||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
||||||||||||
| 14.11.2023, 23:07 | ||||||||||||
1
|
||||||||||||
|
Модератор
|
||
| 18.11.2023, 21:19 | ||
|
В современных версия Шарпа надо использовать data is null, в старых ReferenceEquals(data, null).Добавлено через 2 минуты Можно ещё использовать Equals(data, null) или ((object)data) == null. Но оба эти способа используют метод Equals, который тоже может быть переопределён - поэтому не советую.
1
|
||
| 18.11.2023, 21:19 | |
|
Помогаю со студенческими работами здесь
11
Функция возвращает неверное значение Исправить метод, который возвращает неверное значение Рекордсет возвращает значение 'null'. New возвращает Null Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|