Какой смысл арифметических операций с нулем?
Выпал в осадок, как увидел что-то подобное
int? test = null;
if(test - 1 != null)
{
....
}
else
{
....
}
Может с одной стороны и хорошо, что разрешили - код проще получается, но с другой выглядит дико.
или нет? return test - 1??0;
название даже придумали Lifted operators, Брр, лишь бы не приснилось
https://learn.microsoft.com/en-us/dotnet/csharp/language-r...
Народ тут и другие перлы публикует
[Test] public void TestNullOps() { Assert.That(10 / null, Is.Null); Assert.That(10 * null, Is.Null); Assert.That(10 + null, Is.Null); Assert.That(10 - null, Is.Null); Assert.That(10 % null, Is.Null); Assert.That(null / 10, Is.Null); Assert.That(null * 10, Is.Null); Assert.That(null + 10, Is.Null); Assert.That(null - 10, Is.Null); Assert.That(null % 10, Is.Null); int zero = 0; Assert.That(null / zero, Is.Null); }
Может еще понюхать? Кроме отвращения ничего не вызывает.
Хотя понять как-то можно и можно. Если один из операндов нулл то и результат также нулл, может быть удобно для математиков, но смысл то в чём?
if(a - 1 == null)
if(a/0 == null) - вообще ляпота
Это чтобы имхо try-catch блок не ставить, если будет null, то вернёт имхо пустоту.
Похоже нашлось
http://zuga.net/articles/cs-what-are-lifted-operators/
int? ten = 10; int? twenty = 20; // result.Value is 30 int? result = ten + twenty;
Without lifted operators, the compiler would report:
Error CS0019 Operator '+' cannot be applied to operands of type 'Nullable<int>' and 'Nullable<int>'.
Но проблемы доставляют
https://mfranc.com/blog/something-null-is-false-c-and-lift...
if (data.CreateDate => this.LastUpdateDate) { DoSomething(); }
Выпал в осадок, как увидел что-то подобное
int? test = null;
if(test - 1 != null)
{
....
}
else
{
....
}
Может с одной стороны и хорошо, что разрешили - код проще получается, но с другой выглядит дико.
или нет? return test - 1??0;
Ну, например, вы обрабатываете какой-нибудь большой json. В качестве результата может получится другой json, у которого будут поля, вычисленные на основе базовых скалярных (из оригинального json-а).
Резонно предположить, что без liffted операций пришлось бы сильно усложнить код (проверки на null, try/catch и еще что-нибудь такое). Он стал бы более подвержен ошибкам, более дорогим в тестировании. А так - чистый профит :-) А на синтетических примерах пользу увидеть сложно.
Error CS0019 Operator '+' cannot be applied to operands of type 'Nullable<int>' and 'Nullable<int>'.
А вы попробуйте Int32 вместо int, int - это же базовый тип, имхо int не может быть null, а Int32 или Int64 могут быть null. Я всегда когда играюсь в программирование использую только Int32, ну или очень очень редко Int64. В Java я тоже использую Integer. Особенно когда работают с базами данных там используют Int32 вместо int.
Я предпологаю (моё личное предположение) что:
int? переменная;
это тоже самое что:
результат = переменная == null ? 0 : переменная; // или результат = переменная == null ? "" : переменная;
Вот пишу так:
using System; public class Program { public static void Main() { int a = null; } }
А компилятор даёт ошибку:
Compilation error (line 7, col 16): Cannot convert null to 'int' because it is a non-nullable value type
Хотя Int32 тоже даёт ошибку, странно...
В Java если напишишь так:
int a = null;
то компилятор даст ошибку.
А если напишишь так, то никакой ошибки не будет:
Integer a = null;
Мне кажется вы пытаетесь смешивать что-то разное
Вот всё описано
https://learn.microsoft.com/en-us/dotnet/csharp/language-r...
https://learn.microsoft.com/en-us/dotnet/csharp/language-r...
никогда с Явой не работал, но похоже всё правильно
https://www.theserverside.com/blog/Coffee-Talk-Java-News-S...
Это одни и то же
Я спросил на ответах см. https://otvet.mail.ru/answer/2037969726 цитирую:
И еще такой момент. В C# по-хорошему никаких примитивных типов нет. Любая переменная - это объект. Там просто компилятор делает финт ушами и в зависимости от контекста рассматривает ее то как примитив, то как объект.
Не могут. Int32, rfr b Int64 - структуры. Знаешь чем отличается структура от класса?
- Ну в Си знаю... В Си структура содержит только переменные, а в классе есть кроме переменных ещё методы. В Си я часто использовал структуру. Про оператор ? я узнал, когда мне родители подарили Mac Mini, в Objective-C там тоже есть оператор ?. И отец начал недавно пользоваться этим оператором. Раньше отец ничего этого толком не знал, и всё равно с каждой проданой программы отец получал 1000$. Это я ему рассказал недавно.
- Вообще я теорию не учу, а перехожу сразу на практику, и всё изучаю методом тыка, или смотрю ютуб уроки, если книги читаю, то я смотрю только пример кода, из-за дислексии мне
очень трудно читать книжки. Программировать я начал в 9-10 лет, потому-что папа программировал дома, я программировал на GW-Basic и Turbo C 1.0, изучал методом тыка. В 1998 папа купил Visual Basic 6.0, и я изучал его методом тыка, и смотрел примеры в MSDN. В 2000 когда я поступил в колледж учил Pascal.
- Просто мой папа и врач психиатр запрещают мне заниматься программированием. Отец хочет чтобы я HTML и CSS учил, а врач психиатр не хочет чтобы я что-то учил. Отец хочет чтобы я HTML и CSS учил, потому-что он хочет передать свою программу мне.
- В колледже когда я учился, учителя критиковали и ругали продукты Microsoft. Допустим когда мы ехали на IT выставку в г. Мюнхен, нам учитель сказал, кто пойдёт на стенд Microsoft, тот получит плохую оценку.
- Когда я в колледже изучал ASP NET во время других занятий, над мной смеялся весь класс, дело в том, что мне папа на день рождения подарил хостинг с ASP.NET 2.0, поэтому я ASP NET изучал.
- Мой отец не любит продукцию Microsoft, потому-что после того как вышла Windows 7 нельзя запускать приложения написанные на Visual Basic 6.0
- Иногда я выдумываю из головы, моя мама тоже так часто делает. Моя мама хоть с высшим образованием она биолог, биофизик, биохимик, и биоинформатик и у неё докторская степень. Когда я рассказываю в интернете что моя мама сказала, над мной все смеются.
- Бывший одноклассник из колледжа (он родом из Казахстана) до сих пор не знает что такое Primary Key и Foreign Key а работает в IT фирме.
- Мои родители, которые не профи в IT в сумме получают 6 тыщ евро ежемесячно, и они смогли заработать денег на 2 трёхкомнатные квартиры в Германии, и мама собирается купить ещё новый БМВ или новую Ауди. Допустим мама знает только PyMOL, Rasmol, JMol а больше она ничего не знает, ну ещё Microsoft Office знает, умеет в Word-е статьи писать. И я маму научил пользоваться смартфонами, моя мама не в состояние изучить iPhone или Android, я её учил куда тыкать, опять же я этому научился методом тыка. А папа может программировать, но не разбирается толком в операционных системах и в программах.
- То что я методом тыка осваю, я делюсь в своём форуме, так-же в своём форуме пишу что уже знал - https://programming.mybb.ru/ а так-же в своей группе - https://groups.germany.ru/1299414/f/40315715.html?Cat=&pag... и https://groups.germany.ru/1299414/f/40378963.html?Cat=&pag...
- У папы сломался компьютер, а я не пользовался ноутбуком, который мне в 2017 году подарили, он 2 года лежал пылился, т.к. у меня в сумме 3 компьютера 2 ноутбука и Mac Mini. Когда я последний раз включал ноутбук я поставил Visual Studio 202x. Как куплю новый ноутбук, так и начну изучать современную версию C#.
- Когда психиатру или медбрату хвастаюсь что что-то новое изучил, они очень недовольны чем я занимаюсь, и пытаются на завод отправить работать или в центр инвалидов пытаются запихать. Иногда когда занимаюсь чем заниматься нельзя, у меня щёки раздуваются.
- В последнее время у меня апатия, и я уже серьёзно давно не программировал. В 2019 году написал соцсеть за 4 месяца на PHP.
PS. Хоть над моей мамой смеются, когда я что-то в интернете пишу что она сказала, но она получила докторскую степень в Германии, и получает 5 тыщ евро в месяц. Просто она любит говорить в чём она сама не разбирается, ей верят, а иногда не верят. Я повторяю её слова пишу в интернете и народ смеётся. Допустим моя мама раньше говорила всем родственникам что она богатая, но нам она не говорила сколько у неё денег на счету, и папа и я смеялись, а потом когда она купила квартиру 3х комнатную мы перестали смеятся, у неё вообще золотая банковская карточка, и когда мама расплачивается в магазине по золотой карточки, ей чуть ли не в ноги кланятся кассиры.
Опечатка:
В 2000 когда я поступил в университет колледж учил Pascal.