- 1
public T GetT<T>(T t1, T t2) where T : class, IEnumerable<T>, new() { return new T().Concat(t1.Concat(t2)) as T; }
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+105
public T GetT<T>(T t1, T t2) where T : class, IEnumerable<T>, new() { return new T().Concat(t1.Concat(t2)) as T; }
привет всем! давно я не выкладывал перлы)
история сего кода такова: сидел я и придумывал вопросы на анкетирование при принятии на работу в мою контору. дело дошло до дженериков. не долго думая родилась сия жесть. када я сам понял шо написал, был подстолом.
вчитайтесь (вдумайтесь) в код!
то шо получилось - это код, который с синтаксической точки зрения абсолютно правильный, и он закомпилируется, НО, этот метод невозможно вызвать принципе! нельзя построить синтаксическую конструкцию средствами языка, ибо это будет постоянно сложенный на один уровень енумерейбл дженерик.
так-то!
Ошибка 1 "T" не содержит определения для "Concat" и не был найден метод расширения "Concat", принимающий тип "T" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) E:\MikhCarko\Projects\ConsoleApplication 1\ConsoleApplication1\Program.cs 10 28 ConsoleApplication1
Просто, как бы, если не компилируется - то и не код. А раз не код - то не говнокод.
Ты где-то метод main видишь?
и вообще -- у тебя что, русский .net SDK? Это о многом говорит
Ты болван? .Concat - это что за extension method?
> и вообще -- у тебя что, русский .net SDK?
Как это относится к делу? Очередное ad hominem.
> только дегенераты
Аргументация ad hominem в качестве логической ошибки имеет следующую форму:
1. Человек A задаёт вопрос X.
2. О человеке А известно нечто неприемлемое.
3. Следовательно, вопрос X глуп.
В такой форме логическая некорректность данной аргументации очевидна: тот факт, что лицо, задавшее вопрос, характеризуется по каким-то признакам отрицательно, никак не влияет на глупость его вопроса.
2. О человеке-уебкилле извесно то, что он школоло и пишет всякую эзотерическую поебень в своём посте вида "ad hominem", дабы хоть как-то выделится среди всей массы и показать размер своего достоинства своих знаний своё умение пользоваться википедией.
3. Следовательно, человек-уёбкилл туп до невозможности, пост его высраная хуита, ниасилил программу даже уровня 9-ти классов, в связи с чем приходится бомжевать на улице, за сданные бутылки, собранные на улице, можно сходить в интернет-клуб, зайти на говнокод и насрать как положено.
Вебкилл, гесты за тебя!
1. Это Интернет, тут могут послать на х##.
2. Выбор есть. Не нравится, не читай.
3. Трёшь и банишь, значит 3.14дорас.
4. Аноним хуже 3.14дораса.
5. Будь готов, что всё, что ты написал в Интернете может
стать достоянием общественности. И не 3.14зди, если станет.
6. Всё, что вы напишете, на самом деле уже давно является
бояном.
7. Общаясь виртуально, будь готов к реальному общению с теми
же людьми. Тот, кто замыкается в виртуале - хуже анонима. Не
скрывай лицо за аватаром. Всё равно найдут, если захотят.
8. Прежде чем спросить людей, спроси у поисковой системы.
9. Прежде чем лезть в сетевую дискуссию, подумай, в курсе ли
ты вообще.
10. С3.14здил - ставь копирайт. Не знаешь чьё - не пости. Не
поставил - 3.14дорас.
11. Не трави, и не травим будешь.
12. Не парься! Не всё, что происходит в интернете тебя
касается.
13. Однажды попавшее в интернет остаётся в интернете
навсегда.
зы смю правило 4
1. не нравится, не читай
2. не умеешь (не разбираешься в сабже), не пиши
3. если уж 1, не ()зди, а если уж 2, то отвечай за базар, ибо будь ты хоть трижды анонимусом в интернете, тебя найдут в реале и дадут ()зды
Другие русским visual studio под страхом смерти пользоваться не будут
визуал студио сишарп экспресс - хорошая штука для редактирования кода и отладки. остальное - не нужно.
ты давай вебкиллами назови линупсоидами - они из всего из всего богатства тулзов студии нажимают ноль кнопок, только чёрная готишная консоль да мейкфайлы.
ОйОй Шарпокодер узнал про бесконечно разворачивающиеся шаблоны, наверно и IQ целых 10.
))))))))
вызываю GetT<MyClass>(new MyClass(),new MyClass()), всё откомпилилось. ЧЯДНТ?
насчёт русского СДК и того кто им пользуется, полностью согласен с гестами, +1, это галимая школота, которой на паскале или на бесике пидальть только, сто впрочем и так видно, еси он не может понять, что дефинишен метода Concat находится в System.Linq, который есть часть BCL, версий > .NET 3.5.
насчёт высоких интеллектуалов гэстов, у которых IQ зашкаливает за 1000, пускай молчят в тяпочку и не умничают тут, ибо я выложыл этот код чисто для потехи, а не для того, чтобы такие светила мировой науки, цвет нации, величяёшие говнокодеры всех времён и народов ломали свои головы над тайнами вселенной, сокрытыми в дженериках, просто убейтесь об стенку.
насчёт "MyClass" - молодец гэст, красиво выкрутлся, хотя и практической ценности от такого решения не больше чем от самого метода, что выложил, ибо каждый элемент енумерейбла - это ещё один енумерейбл, параметром которого будет такой же точно енумерейбл, - бесконечно вложенный дженерик.
З.Ы.: вместо того, шобы тут всякий шлак разводить, гест с АйКью 1E6, лучше бы додумался до такого решения.
З.Ы.Ы.: а вцелом, пасиба, повеселили старика коментами, молодцы гэсты!
пиздец. эта фраза выдаёт в тебе дешёвого понтовщика (я знаю английский - я очень крутой). профессионалу без разницы - на каком языке студия. действия отрабатываются до моторики пальцев, тексты не имеют значения. или ты каждый раз внимтельно читаешь надпись Debug, прежде чем нажать дебажить? Если выдаётся ошибка - то рядом даётся её код.
> выложыл
Пиздец
Хотя нет, я зря на тебя наехал. Речь вообще-то шла о русскоязычной Визуал Студио, а не СДК. Здесь я согласен. Терминология в русском языке не очень хорошая, можно запутаться (Thread = поток, Stream = поток и т. д.). Читать оч сложно.
НО! Ничего в этом плохого нет. Если ты знаешь английский - ты просто его знаешь. Если ты знаешь его немного, но хреново - то начинаешь о своих познаниях кричать на каждом углу, и кто знает чуть хуже - тот школота галимая и т. д.
тут речь вовсе не о том, знаешь ли ты английский или нет, и кричишь ли ты о своих познаниях или нет.
чтобы делать реальные проекты и зарабатывать на них бабло, его нужно просто хорошо знать и без этого никак и никуда. именно это и отличает хеллоуворлдщиков от настоящих разработчиков.
я в таком случае не буду работать там. сдались мне профессиАналы, которым важнее, какой человеческий язык я предпочитаю, нежели мои иные какие-то качества.
> чтобы делать реальные проекты и зарабатывать на них бабло, его нужно просто хорошо знать и без этого никак и никуда.
я знаю английский прекрасно. и это не мешает мне использовать русскоязычную визуал студио.
тут разумеется приоритет не в языке, на котором ты юзаеш студию. например еси вся контора юзает русскую версию, то тада норм (хотя я таких не знаю, и вряд ли када такие появятся), а вот еси все юзают англ, а ты будеш всем показывать тотже стек трейс на русском, то будет полная бдяга (и упаси тебя господи исходный код писать с идентификаторами на кириллице, за такое бьют ногами в лицо!).
кроме того, в крупных конторах юзают ТФС (еси ты конешно знаешь что это такое), так вот щяс там всё на англ. и переводить его для тебя никто не станет.
да и ваще если уже на то пошло, то шарп, это как не крути - мнемонический язык программирования, основанный на английском, и для того чтобы на нём кодить, надо обязательно знать англ. это тебе не 1С скрипты писать)))
я юзаю всё на английском, винду, проги, студию, МСДН, оффис, ТФС, Шарепоинт и прочее ибо мне так проще и понятнее, ибо изначально вся компьютерная терминология англоязычна.
тебя куда-то заносит. я просто скачал Visual Studio C# Express. оказалось, что дали русскую версию. и мне похуй. конец истории.
> а вот еси все юзают англ, а ты будеш всем показывать тотже стек трейс на русском, то будет полная бдяга
эммм.. Стектрейс как можте бытиь русским? Там только описание эксепшна русское. По-моему, так будет на русскоязычной винде всегда, не?
> я юзаю всё на английском,
why wouldn;'t you speak English here too, it's a tech site
у еня кроме донтета кучи других проектов
и если блять чото работает под англ. виндой вдруг выльется в кракозябры на русской?
мне этого не надо.ю
так что ебал я твою любовь к быдлоанг\лосаксам, пойду кучать ЯП "ПРОФИТ"
значит сам где то дурак, бо Юникод, как и Расширенный Юникод, давно на дворе
ага, давно, а конгсоль винды (хр хотя бы) например поддерживает только oem. сделает пиндос вывод ошибки в консоль - протестирует, ок, работает. а кириллица уже не прокатит. и таких моментов много. до сих пор встречаются траблы с локализацией. или например локализация дробей: "1.5" вместо "1,5" и т. д. Юникод - это не панацея.
2. Это все ТОЛЬКО беды софта, которые наивно полагают, что с ними будут работать только англоязычные(как вариант, немчики) с определенной сислокалью (англ., нем) и конечно же такой софт сходит с ума, если настройки отличаются
ага, или вручную пользователем (который ебать хотел все эти настройки), или вручную программером, но тогда для тестирования нужно иметь ось с правильной локализацией.
> Это все ТОЛЬКО беды софта
ну да, до ума не доведено, на локализованной (неанглоязычной) системе не проверялось - вот и вылазит.
удивил.
т.е. я имел в виду не консоль, а вообще. консоль - только как пример того, что проблема юникода осталась даже для ucs2 (не говоря уже о >65535)
тем более что ещё если софт кросплатформенный, то больше проблем вылазит...
хаха, недавно видел список "современных" прог, которые сходили сума со знаками из не BMP
например сходила с ума опера (версия - хз)
Подавляющее большинство разработчиков полагают, что юникода вполне хватает и это почти так.
Вчера узнал, оказывается MS. Net 2.0 не мог загрузить сборки, если в пути к сборке присутствовали combination marks типа знаков акцента (немецкие умляуты, напр.). Пофиксено в SP1. Вот тебе и "Расширенный Юникод давно на дворе" :)
К сожалению, ув. Вебкилл, мы не в пиндосии, нам вдвойне опасно быть дураками.
стопудова!
согласен!
добавить нечего
Пассажи про бесконечную вложенность непонятны. Есть банальный объект, являющийся контейнером таких же объектов, которые можно доставать через энумератор. Так можно реализовывать представление любого дерева (файловой системы, например).
значит для дробей, надо юзать CultureInfo, и нечего не хардкодить.
для проверки правильности работы проги, с ХР надо помудица, а вот на 7 всё просто, меняеш системный язык на требуемый (еси его нет - докачиваеш через обновления), меняеш локаль и вуаля, товоя виндя может стать хоть китайской. так можно протестировать и определить все проблемы с языком и кодировкой.
разумеется юникод не панацея, но в большинстве случяев его впалне хавтает.
что касается проблем с кодировкой консоли, то нада юзать определённый Emcoding для вывода текста. можно ещё сделать интероп на апи функцию "CharToOemW" - тоже в большенстве случяев помогает.
резюмируя, соглашусь с Lure Of Chaos, что када винда может правильно показать символы, а софт - нет, то
> Это все ТОЛЬКО беды софта