Здравствуйте, Shmj, Вы писали:
S>В C# этот new никакой смысловой нагрузки не несет. Так зачем же он?
Target-typed new?
Или ты все еще живешь в 2010 году?
Здравствуйте, rameel, Вы писали:
T>>Иначе будет мымрыц при нахождении в области видимости переменной совпадающей с названием класса. R>Переменные совпадающие с названием класса — это чтобы жизнь медом не казалось?
Здравствуйте, gandjustas, Вы писали:
G>Target-typed new? G>Или ты все еще живешь в 2010 году?
ну вопрос наверное подразумевает почему изначально внесли такое требование. Да и тот же target-typed new. В C++ например обходятся без new (хотел написать прекрасно обходятся, но признаться честно не так всё прекрасно).
Здравствуйте, sergii.p, Вы писали:
S>>Увы, у меня регулярно. SP>пора переставать есть кактус. Название класса — UpperCamelCase, название переменной — lowerCamelCase и никаких коллизий не возникает.
А пропертя? Собственно, только с ними такие проблемы.
Здравствуйте, 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 писать, он помогает чтению кода
Здравствуйте, Teolog, Вы писали:
R>>Переменные совпадающие с названием класса — это чтобы жизнь медом не казалось?
T>Многие ли вместо Network напишут NetworkImplementationRefObject — потому как нафига такое извращение которое еще поди вспомни?
Вот именно, извращение, ибо никто в здравом уме так не пишет как и не пишет var Network = Network. Переменные и аргументы метода должны начинаться со строчной буквы!
Здравствуйте, Sharov, Вы писали:
R>>Переменные совпадающие с названием класса — это чтобы жизнь медом не казалось?
S>Увы, у меня регулярно.
Мда, такое я видел либо в говноблогах, либо у тех, кто только учится программировать /(на C#)?/g. Вторым простительно, но в любом случае, зачем на них оглядываться? Если же такой бардак в компании, то увы и ах, но опять же — это не повод теперь принимать его за эталон.
R>Вот именно, извращение, ибо никто в здравом уме так не пишет как и не пишет var Network = Network. Переменные и аргументы метода должны начинаться со строчной буквы!
А публичные поля и пропертя — с большой. Вот и будет заботы чтобы ни в одном классе не завести поле с таким именем.
Здравствуйте, Teolog, Вы писали:
T>А публичные поля и пропертя — с большой. Вот и будет заботы чтобы ни в одном классе не завести поле с таким именем.
И?! Поля и свойства не могут пересекаться с названием класса, в котором они объявлены, о чем вообще речь? А если в других классах, то в чем собственно проблема?
Напомню с чего речь пошла
Иначе будет мымрыц при нахождении в области видимости переменной совпадающей с названием класса.
Если что, ничто не мешает и сейчас переменную так же как и аргументы с названием типа объявлять в одной области видимости, и наличие new или его отсутствие на это никак не влияет.
Здравствуйте, Shmj, Вы писали:
S>В C# этот new никакой смысловой нагрузки не несет. Так зачем же он?
Для наглядности. А вот чего в шарпе не нужно, так это дебильный break. Вот он вообще ниачом.
Ну и switch для паттерн матчинга я бы переименовал в match, чтобы не "перегружать смыслами" ключевые слова.