Deutsch

Можно ли возвращать null из функции?

5254  1 2 3 4 5 6 7 8 все
AlexNek патриот15.04.24 20:01
AlexNek
NEW 15.04.24 20:01 
в ответ Murr 14.04.24 23:50
на больших ИБМах фортрановские

у тя шо в подвале стоит ИБиМа и секретно по ночам пишешь проги на фортране? Тогда об этом можно как то задумываться.

Тем более о "==/!= 0L" никакой речи и не было смущ

#81 
AlexNek патриот15.04.24 20:18
AlexNek
NEW 15.04.24 20:18 
в ответ alex445 15.04.24 15:06
Да, но нет.

https://learn.microsoft.com/en-us/dotnet/csharp/language-r...


но сами эти условные записи как конструкции языка не всегда тождественны

В % отношении мона? смущ Есть что то существенное, кроме притянутого за уши примера на SO?


так кстати, компилируется без проблем

var test = (a is int?) & b;

#82 
alex445 патриот15.04.24 20:40
NEW 15.04.24 20:40 
в ответ AlexNek 15.04.24 20:18
Да, но нет.

https://learn.microsoft.com/en-us/dotnet/csharp/language-r...

Такая запись там нигде в коде не используется - лишь в описании. Вы можете создать дженерик с наллабл параметром типа? И чтобы он не гораничивался налловыми типами значений? Нет - в Сишарпе запись Т? означает лишь налловые типы значений. А если я хочу, чтобы параметр типа включал в себя не только их?

#83 
AlexNek патриот15.04.24 20:47
AlexNek
NEW 15.04.24 20:47 
в ответ alex445 15.04.24 20:40
И чтобы он не ограничивался налловыми типами значений?

что то я не поспеваю, за новыми идеями смущ можно примерчик?

#84 
alex445 патриот15.04.24 20:51
NEW 15.04.24 20:51 
в ответ AlexNek 15.04.24 20:47

Так я сам и спрашиваю пример - можно сделать так, чтобы параметр типа был налловым, но мог принимать и налловые типы значений, и ссылочные типы?

#85 
AlexNek патриот15.04.24 20:57
AlexNek
NEW 15.04.24 20:57 
в ответ alex445 15.04.24 20:51
но мог принимать и налловые типы значений, и ссылочные типы?

так смысл непонятен. Зачем подобное одновременно? Add<Person?>() - Add<int?>()

#86 
alex445 патриот16.04.24 04:37
NEW 16.04.24 04:37 
в ответ AlexNek 15.04.24 20:57, Последний раз изменено 16.04.24 04:38 (alex445)

Ну вам же охота вместо одного универсального null для всех типов иметь отдельный null для каждого типа (этот ваш "пустой объект"). Вот и у других могут быть странные желания. Вы либо всем разрешите иметь странности, либо всем запретите, а то этому можно, а тому нельзя. ))

#87 
AlexNek патриот16.04.24 21:47
AlexNek
NEW 16.04.24 21:47 
в ответ alex445 16.04.24 04:37
Ну вам же охота

Не следует делать далеко идущих выводов из некоторого количества сообщений спок


Вот и у других могут быть странные желания

Да пожалуйста, просто желание понять невозможно. Желание типа - слетать на Луну, как - то можно понять.

Но вот - слетать на Луну по пути заскочив на Марс, будет уже не так просто понять.


#88 
alex445 патриот17.04.24 05:13
NEW 17.04.24 05:13 
в ответ AlexNek 16.04.24 21:47
Не следует делать далеко идущих выводов из некоторого количества сообщений спок

Срыв покровов, понел, да?

#89 
MrSanders коренной житель17.04.24 09:44
NEW 17.04.24 09:44 
в ответ alex445 15.04.24 20:40
Вы можете создать дженерик с наллабл параметром типа? И чтобы он не гораничивался налловыми типами значений? Нет - в Сишарпе запись Т? означает лишь налловые типы значений. А если я хочу, чтобы параметр типа включал в себя не только их?

И тут Ололёшу накрыло и понесло... И чтоб Нью-Высюки стали столицей голактике! Ни меньфе!

#90 
AlexNek патриот17.04.24 20:27
AlexNek
NEW 17.04.24 20:27 
в ответ alex445 17.04.24 05:13
Срыв покровов, понел, да?

Тыбрят уже усё. Не успел только в сторонку отойти, а тут и ... миг

#91 
7495 старожил23.04.24 20:00
7495
NEW 23.04.24 20:00 
в ответ AlexNek 17.04.24 20:27

нп


Подниму тему про нули, оказывается чем нулей больше - тем лучше.. и на конте но и в адресе в блокчейне!

Чем больше нулей, тем больше мы экономим газа, когда работаем со смартконтрактами, кароч АФД в адресе!

этим можно Бората потролить, сейчас все бездельники и дармоеды боятся что АФД всех их работать заставит!



.

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#92 
Программист коренной житель24.04.24 09:24
NEW 24.04.24 09:24 
в ответ AlexNek 17.04.24 20:27, Последний раз изменено 24.04.24 11:25 (Программист)

Кстати, я тут на днях столкнулся со случаем, когда null-объекты очень полезны :)

Пример - регулярные выражени. Как я и говорил, null-объекты могут оказаться полезными, когда у возвращаемого объекта есть логики.

Упрощенный код:

                Match match = this.regex.Match(pattern);

                while (match.Groups[REGEX_GROUPNAME_0].Success)
                {
                        string groupName1 = string.Empty;
                        string groupName2 = string.Empty;
                        string groupName3 = string.Empty;

                        if (match.Groups[REGEX_GROUPNAME_1].Success)
                        {
                            groupName1 = $",{match.Groups[REGEX_GROUPNAME_1].Value}";
                        }

                        if (match.Groups[REGEX_GROUPNAME_2].Success)
                        {
                            groupName2 = $",{match.Groups[REGEX_GROUPNAME_2].Value}";
                        }

                        if (match.Groups[REGEX_GROUPNAME_3].Success)
                        {
                            groupName3 = $",{match.Groups[REGEX_GROUPNAME_3].Value}";
                        }

                        match = match.NextMatch(); // upd: забыл эту строчку :)
                }                    

Без null-объекта этот код был бы не так хорошо читаем.



#93 
alex445 патриот24.04.24 11:08
NEW 24.04.24 11:08 
в ответ Программист 24.04.24 09:24, Последний раз изменено 24.04.24 11:09 (alex445)

Для функции string.IsNullOrEmpty пофиг, налл у вас там или пустая строка. Да и чем проверка на налл от проверки на пустую строку отличается?


if (str != null)

if (str != "")

if (str != string.Empty)


Или какой налл-объект вы имеете ввиду?

#94 
Программист коренной житель24.04.24 11:27
NEW 24.04.24 11:27 
в ответ alex445 24.04.24 11:08
Или какой налл-объект вы имеете ввиду?

match

Обрати внимание, что match не проверяется на null, также как и match.Group[<имя группы>] тоже не проверяется на null.

#95 
AlexNek патриот24.04.24 21:02
AlexNek
NEW 24.04.24 21:02 
в ответ Программист 24.04.24 11:27

Я тоже не совсем понимаю отчего разговор о нулл объекте

Regex.Match Method

Return: An object that contains information about the match.

В любом случае возвращается один и тот же объект или мы думаем о разных вещах?

#96 
alex445 патриот24.04.24 21:10
NEW 24.04.24 21:10 
в ответ Программист 24.04.24 11:27

У этого Match сильно дофига свойств, чтобы его налл-объектом считать. Этак можно любой объект, где какое-то поле равно нулю, наллу или пустой строке, принять за налл-объект. При этом куча других полей у него заполнены.

#97 
Программист коренной житель25.04.24 08:13
NEW 25.04.24 08:13 
в ответ AlexNek 24.04.24 21:02
Я тоже не совсем понимаю отчего разговор о нулл объекте

Ну мое понимает null-объектка - это некий объект (совсем необязательно другого типа), который выполняет действия "по умолчанию" (или имеет состояние "по умолчанию")


Regex.Match Method
Return: An object that contains information about the match.
В любом случае возвращается один и тот же объект или мы думаем о разных вещах?

Если совпадения нет, то все равно возвращается валидный объект, а не null, т.е. фактически null-объект.

#98 
MrSanders коренной житель25.04.24 08:19
NEW 25.04.24 08:19 
в ответ Программист 25.04.24 08:13
Ну мое понимает null-объектка - это некий объект (совсем необязательно другого типа), который выполняет действия "по умолчанию" (или имеет состояние "по умолчанию")
Если совпадения нет, то все равно возвращается валидный объект, а не null, т.е. фактически null-объект.

Совершенно верно.

#99 
Программист коренной житель25.04.24 08:20
NEW 25.04.24 08:20 
в ответ alex445 24.04.24 21:10, Последний раз изменено 25.04.24 08:21 (Программист)
У этого Match сильно дофига свойств, чтобы его налл-объектом считать.

Ну во-первых, не так уж и много :)

Во-вторых, где определена граница, с какого количества свойств объект не может считать null-объектом?

В-третьиъ, хотя этого и не требуется от null-объекта, но у Match все геттеры, так что ты даже не сможешь изменить состояние объекта.


Этак можно любой объект, где какое-то поле равно нулю, наллу или пустой строке, принять за налл-объект. При этом куча других полей у него заполнены.

Null-объект - это объект с поведением "по умолчанию". Равно у null-объекта какое-то поле нулю или нет не имеет никакого значения. Null-объект находится в рабечем состоянии. Всегда.

1 2 3 4 5 6 7 8 все