Re: А что если убрать new в C# ?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 29.08.23 20:17
Оценка: 5 (1)
Здравствуйте, Shmj, Вы писали:

S>В C# этот new никакой смысловой нагрузки не несет. Так зачем же он?

Target-typed new?
Или ты все еще живешь в 2010 году?
Re[3]: А что если убрать new в C# ?
От: Teolog  
Дата: 30.08.23 08:35
Оценка: +1
R>Переменные совпадающие с названием класса — это чтобы жизнь медом не казалось?

Многие ли вместо Network напишут NetworkImplementationRefObject — потому как нафига такое извращение которое еще поди вспомни?
Re[3]: А что если убрать new в C# ?
От: Sharov Россия  
Дата: 30.08.23 08:57
Оценка:
Здравствуйте, rameel, Вы писали:

T>>Иначе будет мымрыц при нахождении в области видимости переменной совпадающей с названием класса.

R>Переменные совпадающие с названием класса — это чтобы жизнь медом не казалось?

Увы, у меня регулярно.
Кодом людям нужно помогать!
Re[2]: А что если убрать new в C# ?
От: sergii.p  
Дата: 30.08.23 09:03
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Target-typed new?

G>Или ты все еще живешь в 2010 году?

ну вопрос наверное подразумевает почему изначально внесли такое требование. Да и тот же target-typed new. В C++ например обходятся без new (хотел написать прекрасно обходятся, но признаться честно не так всё прекрасно).

Dictionary<string, List<int>> field = new() {
    { "item1", new() { 1, 2, 3 } }
};


=>

std::unordered_map<std::string, std::vector<int>> field = {
    { "item1", { 1, 2, 3 } }
};
Re[4]: А что если убрать new в C# ?
От: sergii.p  
Дата: 30.08.23 09:34
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Увы, у меня регулярно.


пора переставать есть кактус. Название класса — UpperCamelCase, название переменной — lowerCamelCase и никаких коллизий не возникает.
Re[5]: А что если убрать new в C# ?
От: Sharov Россия  
Дата: 30.08.23 09:40
Оценка: +1
Здравствуйте, sergii.p, Вы писали:

S>>Увы, у меня регулярно.

SP>пора переставать есть кактус. Название класса — UpperCamelCase, название переменной — lowerCamelCase и никаких коллизий не возникает.

А пропертя? Собственно, только с ними такие проблемы.
Кодом людям нужно помогать!
Re[6]: А что если убрать new в C# ?
От: sergii.p  
Дата: 30.08.23 10:13
Оценка:
Здравствуйте, Sharov, Вы писали:

S>А пропертя? Собственно, только с ними такие проблемы.


в ветке говорили изначально про "переменные, совпадающие с названием класса", но в остальном согласен, со свойствами беда.
Re[3]: А что если убрать new в C# ?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 30.08.23 11:02
Оценка: +1
Здравствуйте, sergii.p, Вы писали:

SP>Здравствуйте, gandjustas, Вы писали:


G>>Target-typed new?

G>>Или ты все еще живешь в 2010 году?

SP>ну вопрос наверное подразумевает почему изначально внесли такое требование. Да и тот же target-typed new. В C++ например обходятся без new (хотел написать прекрасно обходятся, но признаться честно не так всё прекрасно).


Конечно же в 2001 году, когда придумывал C# такое требование внесли потому что надо было походить на Java (в первую очередь) и C++ (во вторую). 20 лет назад на плюсах нельзя было так написать и вообще о выводе типов мало кто думал.
Почему не убрали new из C# на этом пути — очевидно чтобы не сломать совместимость. Худшее что можно придумать в языке, что подавляющее большинство программ перестанет компилироваться в версии N+1.
Почему не сделали new опциональным, наверное потому что с момента появления Roslyn target-typed new был в планах, да и не сильно сложно этот new писать, он помогает чтению кода
Re[4]: А что если убрать new в C# ?
От: rameel https://github.com/rsdn/CodeJam
Дата: 30.08.23 13:41
Оценка:
Здравствуйте, Teolog, Вы писали:

R>>Переменные совпадающие с названием класса — это чтобы жизнь медом не казалось?


T>Многие ли вместо Network напишут NetworkImplementationRefObject — потому как нафига такое извращение которое еще поди вспомни?


Вот именно, извращение, ибо никто в здравом уме так не пишет как и не пишет var Network = Network. Переменные и аргументы метода должны начинаться со строчной буквы!
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: А что если убрать new в C# ?
От: rameel https://github.com/rsdn/CodeJam
Дата: 30.08.23 13:49
Оценка:
Здравствуйте, Sharov, Вы писали:

R>>Переменные совпадающие с названием класса — это чтобы жизнь медом не казалось?


S>Увы, у меня регулярно.


Мда, такое я видел либо в говноблогах, либо у тех, кто только учится программировать /(на C#)?/g. Вторым простительно, но в любом случае, зачем на них оглядываться? Если же такой бардак в компании, то увы и ах, но опять же — это не повод теперь принимать его за эталон.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: А что если убрать new в C# ?
От: Teolog  
Дата: 31.08.23 08:24
Оценка:
R>Вот именно, извращение, ибо никто в здравом уме так не пишет как и не пишет var Network = Network. Переменные и аргументы метода должны начинаться со строчной буквы!
А публичные поля и пропертя — с большой. Вот и будет заботы чтобы ни в одном классе не завести поле с таким именем.
Re[6]: А что если убрать new в C# ?
От: rameel https://github.com/rsdn/CodeJam
Дата: 31.08.23 12:08
Оценка:
Здравствуйте, Teolog, Вы писали:

T>А публичные поля и пропертя — с большой. Вот и будет заботы чтобы ни в одном классе не завести поле с таким именем.


И?! Поля и свойства не могут пересекаться с названием класса, в котором они объявлены, о чем вообще речь? А если в других классах, то в чем собственно проблема?

Напомню с чего речь пошла

Иначе будет мымрыц при нахождении в области видимости переменной совпадающей с названием класса.


Если что, ничто не мешает и сейчас переменную так же как и аргументы с названием типа объявлять в одной области видимости, и наличие new или его отсутствие на это никак не влияет.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Отредактировано 31.08.2023 12:10 rameel . Предыдущая версия .
Re: А что если убрать new в C# ?
От: Baiker  
Дата: 12.09.23 16:15
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>В C# этот new никакой смысловой нагрузки не несет. Так зачем же он?


Для наглядности. А вот чего в шарпе не нужно, так это дебильный break. Вот он вообще ниачом.
Ну и switch для паттерн матчинга я бы переименовал в match, чтобы не "перегружать смыслами" ключевые слова.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.