Можно ли возвращать null из функции?
Да, но нет.
https://learn.microsoft.com/en-us/dotnet/csharp/language-r...
но сами эти условные записи как конструкции языка не всегда тождественны
В % отношении мона? Есть что то существенное, кроме притянутого за уши примера на SO?
так кстати, компилируется без проблем
var test = (a is int?) & b;
Да, но нет.https://learn.microsoft.com/en-us/dotnet/csharp/language-r...
Такая запись там нигде в коде не используется - лишь в описании. Вы можете создать дженерик с наллабл параметром типа? И чтобы он не гораничивался налловыми типами значений? Нет - в Сишарпе запись Т? означает лишь налловые типы значений. А если я хочу, чтобы параметр типа включал в себя не только их?
Ну вам же охота вместо одного универсального null для всех типов иметь отдельный null для каждого типа (этот ваш "пустой объект"). Вот и у других могут быть странные желания. Вы либо всем разрешите иметь странности, либо всем запретите, а то этому можно, а тому нельзя. ))
Ну вам же охота
Не следует делать далеко идущих выводов из некоторого количества сообщений
Вот и у других могут быть странные желания
Да пожалуйста, просто желание понять невозможно. Желание типа - слетать на Луну, как - то можно понять.
Но вот - слетать на Луну по пути заскочив на Марс, будет уже не так просто понять.
Вы можете создать дженерик с наллабл параметром типа? И чтобы он не гораничивался налловыми типами значений? Нет - в Сишарпе запись Т? означает лишь налловые типы значений. А если я хочу, чтобы параметр типа включал в себя не только их?
И тут Ололёшу накрыло и понесло... И чтоб Нью-Высюки стали столицей голактике! Ни меньфе!
нп
Подниму тему про нули, оказывается чем нулей больше - тем лучше.. и на конте но и в адресе в блокчейне!
Чем больше нулей, тем больше мы экономим газа, когда работаем со смартконтрактами, кароч АФД в адресе!
этим можно Бората потролить, сейчас все бездельники и дармоеды боятся что АФД всех их работать заставит!
.
Кстати, я тут на днях столкнулся со случаем, когда 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-объекта этот код был бы не так хорошо читаем.
Для функции string.IsNullOrEmpty пофиг, налл у вас там или пустая строка. Да и чем проверка на налл от проверки на пустую строку отличается?
if (str != null)
if (str != "")
if (str != string.Empty)
Или какой налл-объект вы имеете ввиду?
Я тоже не совсем понимаю отчего разговор о нулл объекте
Return: An object that contains information about the match.
В любом случае возвращается один и тот же объект или мы думаем о разных вещах?
У этого Match сильно дофига свойств, чтобы его налл-объектом считать. Этак можно любой объект, где какое-то поле равно нулю, наллу или пустой строке, принять за налл-объект. При этом куча других полей у него заполнены.
Я тоже не совсем понимаю отчего разговор о нулл объекте
Ну мое понимает null-объектка - это некий объект (совсем необязательно другого типа), который выполняет действия "по умолчанию" (или имеет состояние "по умолчанию")
Regex.Match Method
Return: An object that contains information about the match.
В любом случае возвращается один и тот же объект или мы думаем о разных вещах?
Если совпадения нет, то все равно возвращается валидный объект, а не null, т.е. фактически null-объект.
Ну мое понимает null-объектка - это некий объект (совсем необязательно другого типа), который выполняет действия "по умолчанию" (или имеет состояние "по умолчанию")
Если совпадения нет, то все равно возвращается валидный объект, а не null, т.е. фактически null-объект.
Совершенно верно.
У этого Match сильно дофига свойств, чтобы его налл-объектом считать.
Ну во-первых, не так уж и много :)
Во-вторых, где определена граница, с какого количества свойств объект не может считать null-объектом?
В-третьиъ, хотя этого и не требуется от null-объекта, но у Match все геттеры, так что ты даже не сможешь изменить состояние объекта.
Этак можно любой объект, где какое-то поле равно нулю, наллу или пустой строке, принять за налл-объект. При этом куча других полей у него заполнены.
Null-объект - это объект с поведением "по умолчанию". Равно у null-объекта какое-то поле нулю или нет не имеет никакого значения. Null-объект находится в рабечем состоянии. Всегда.