Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
3. WinForms или WPF? Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить? Неправда. C# довольно активно развивается, недавно вышел новый компилятор, шестая версия шарпа, и уже активно разработывается седьмая. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать? Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ). Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ). Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx ) Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана. Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core. SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.
6. С# для мобильной разработки Если нужны инструменты для разработке под мобилы, ставь сразу VS2015 и при установке выбирай все нужные компоненты. Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx Из актуальной литературы - Xamarin Mobile Application Development - Xamarin Essentials
7. Дополнительные инструменты для разработки на C# LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии dotPeek - бесплатный декомпилятор от JetBrains scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним Indent Guides - показывает вертикальные линии на каждом уровне отступов. Format document on Save - форматирует код каждый раз при сохранении документа Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
Чё то я не ебу, почему не добавляется второй пост из pastbin'a, судя по описанию ошибки, там какое то слово из спам листа и я ротегоебал искать в 7000 символах то слово, поэтому оставлю это на совести мочераторов.
9. Что почитать? - The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода. - C# 6.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином - C# 6.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой - C# 6.0 and the .NET 4.6 Framework (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха. - C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.
10. Более хардкорный материал - C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются. - Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили. - CLR via C# (Jeffrey Richter) - это классика, это знать надо.
11. Хочу еще хардкорней - C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата. - Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода. - .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам
12. Литература по WPF Из более-менее актуального можно выделить пару книг: - Pro WPF 4.5 in C# (Matthew MacDonald) - Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
13. Литература по ASP.NET - Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson) - Pro ASP.NET MVC 5 Platform (Adam Freeman) - Beginning ASP.NET for Visual Studio 2015 (William Penberthy)
14. Литература по асинхронности, параллелизму и всему такому - Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции - Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная - Pro Asyn_chronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg
15. Литература не по шарпу, но так или иначе связанная с языком - C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity - Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов. - Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
16. Но я не знаю английский, как я буду это все читать? На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"
17. Что еще нужно знать, чтобы взяли работать за еду? - SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper - Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick - Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун - Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках - Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы - Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST - Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID
На правах опа самты вопрошаю снова, как в WPF анимировать движение окна, при условии, что команда на движение подаётся через метод, не связанный с базовыми событиями любого контрола этого окна (типа там mousedown/keypress, т.е. обычные триггеры/ивенттриггеры/мультитриггеры не подойдут, разве что сейчас попробую дататриггер)? пробовал VisualStateManager, но либо не понял как его прикрутить собсна к окну в кзамле описал visualstategroup со всеми соответствующими анимациями просто между тегами window, перед гридом. не grid же мне толкать, либо неправильно вызываю метод VisualStateManager.GoToState(this, "aaa",false); из Model.
Анон, дай совет криворучке. Использую OpenGL через OpenTK для отображения картинок (1000x1000 - 3000x3000), но у меня оно медленно работает и память замусоривается. Схема примерно такая: Загрузить необходимые текстуры. Привязать текстуру. Нарисовать прямоугольник (с текстурой). Отвязать текстуру. Удалить текстуру (GL.DeleteTexture), так как она не используется далее. И так несколько раз. Но даже со сбором мусора вручную (GC.Collect) оно всё-равно забивает всю видеопамять вскоре.
Как быстро прикрутить ебучую OAuth к части контроллеров уже существующего asp.net проекта(проект использует windows аутентификацию, но часть контроллеров нужно расшарить на внешний доступ)? Есть гайд для идиотов? Не хочется целый день с ней возиться чтобы досконально разобраться.
Нашел пример по EntityFramework. Создаем класс и по нему БД. Проблема одна - там нет конекшн стринга а только <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> </configuration
И у меня не хочет подключатся к mssqllocaldb, пробовал все, названия инстансов с паппки АппЛокаль, пердолил консольку, в СКЛсервере подключается к серверу с именем компа. А вижуал - нет. ЧЯДНТ??!
Двач, помоги разобраться с web-api, есть одна модель и один контроллер, маршрут указан в аттрибуте перед классом, пытаюсь сделать тест через postman и каждый раз при пост-запросе мне возвращает null, я убирал аттрибут, не помогло, в конфиге прописан CamelCaseResolver и имена полей он должен считывать нормально по идее, на стаковерфлоу толком ничего нет.
>>797320 по-моему this.Json(примитив) всегда норовит вернуть какую-нибудь нёх по дефолту. попробуй исправить на new{success=true}. лучше, конечно, во всех вариантах возвращать одинаковую по структуре модель
а вообще, я, может быть, уже запутался во всех версиях асп фреймфорков, но ты юзаешь православный MVC
>>797425 так сюда не учиться приходят, в бОльшей массе, а узнать > я вот тут написал govno_kod_neim, как мне сделать pezpoleznaya_huinya_4erez_anus_neim
Господа, недавно ходил в вуз к дружане и увидел там, как он кодит на шарпе. Мне безумно понравился синтаксис, столько сахара, такая удобная организация, все просто отлично. Я попробовал написать пару простеньких скриптиков - я кончил. По сравнению с задристанной явой - шарп реально смотрится чудесно. Скажите, вот, я хочу учить сшарп. В какое направление лучше смотреть, какие у него перспективы, где чаще используется? Книжка head first C# норм или лучше players guide?
>>797460 Ну, блин, вот реально, мне синтаксис показался каким-то "монолитным" что ли. Вот просто понравился, да и IDE охуенное, эта Visual Studio - чудо (хоть и монстроузоное).
>>797468 Когда фуллСтек станешь - поймешь. Веб это всегда линь, а не шинда с иис Учите лучше джаву, джиэс и постгрис. Иначе соснете со своим сишарпом как подрастете
Еще у джава божественный синтаксис - ловерКамелКейс, который идеально коррелирует с вебом, чего не скажешь про решетку
protected void Add(SomeContext db) { int i = 1; foreach (var p in items.GetAll()) { var city = new City { Name = p.Name }; city.Id = i; i++; db.Citys.Add(city); } db.SaveChanges(); }
Прогач, взываю к тебе, может хоть ты знаешь что с этим делать? Возможен ли вызов из основного треда команды на приостановку тасков?
for (int i = 0; i < count; i++) { await Task.Run(() => FullReg()); await Task.Delay(5000); if (checkBox1.Checked) { if (i % proxyswitch == 0 && i != 0) { //Task.WaitAll(); -- ТУТ ДОЛЖНА БЫТЬ ПРИОСТАНОВКА ВСЕХ ТАСКОВ System.Diagnostics.Process.Start(@"C:\Program Files (x86)\HMA! Pro VPN\bin\HMA! Pro VPN.exe", "-changeip"); await Task.Delay(10000); } } } while(int.Parse(CountFailedAccLabel.Text) + int.Parse(CountFailedAccLabel.Text) != count) { await Task.Delay(proxyswitch*5000); await Task.Run(() => ChangeIPHMAButton_Click(sender, e)); await Task.Delay(10000); //System.Diagnostics.Process.Start(@"C:\Program Files (x86)\HMA! Pro VPN\bin\HMA! Pro VPN.exe", "-changeip"); }
Анон, чита 23 главу Троелсена про Entity Framework и нихуя не понял и большинство элементов претерпели значительные изменения. Где прочитать нормально про EF 6?
>>797867 >платформозависимый Долбоеб не смог в чтение спецификаций и срачей в GNU сообществе. Маня, C# полностью независим от платформы, но зависит от исполняемой среды, которая может быть написана любым мимокрокодилом под любую платформу без оплаты в казну Билли. С таким же успехом мы можем влетать и кукарекать аля ЗАВИСИМЫЕ ОТ СРЕДЫ/ФРЕЙМВОРКА/ПАРАШИ
>>797906 Гугли TPL, а лучше наверни главу 19 Троелсена. У тебя есть множество потоков, которые действуют независимо, но что если они перебегают друг другу дорогу? Например, им всем необходимо произвести вывод своей работы в консоль или на вьюху. Чтобы программа не выдавала хуйню и не выкидывала исключение, можно выдать любой объект за некий светофор аля можно ли приступать к данному коду или нет. То есть, косвенно реализовывавется пауза. У Троелсена будет пример с 10 потоками, которые выводят числа от 0 до 9. Без данного светофора (lock), они все напишут хуйню из разряда 0,0,0,1,0.1,1,1,2... А если предоставлять вывод потокам по очереди, то они нормально выведут числа от 0 до 9. У тебя задача похожая. При смене IP адреса, ты блокируешь или выставляешь красный свет светофору для потоков, у которых в начале своей итерации или жизнедеятельности стоит lock(obj){} //Не пихай сюда код, иначе потоки будут его делать по очереди И пока меняется IP, потоки ожидают своей очереди на строчке выше. Что надо сделать? 1. Объявить единый для потоков объект, который будет являтся флагом private static object obj = new object(); 2. Функцию по смене IP адреса завернуть в конструкцию lock lock(obj){ смена IP } 3. В функции, выполняющей итерационное действие выставить пустую конструкцию lock lock(obj){ } тут код
В идеале, у тебя должен быть массив, информирующий об окончании итерации, для последующей смены IP адреса, если не ожидается окончание таска. Иначе, можно было бы прописать WaitAll();
>>797962 Ну и собственно итог: Потоки, выполняющие итерационное действие приостанавливаются до тех пор, пока не смогут заблокировать самостоятельно объект obj. Так как они ничего с ним не делают, задержки между потоками не должно быть явным (её нету). А вот смена IP - действие длительное и замораживающее. Дождавшись окончание итерации или окончание всех тасков, что правильно и вообще пул потоков надо было использовать, происходит смена IP адреса. В это же время, итерационные потоки не смогут продолжить свой код, так как они не могут заблокировать объект obj, который используется сменой IP адреса. Как только IP адрес будут сменён, они смогут продолжить свою работу в штатном режиме.
Есть одна форма. На ней несколько лейбелов. В них иногда меняются значения. Нужно их после изменения перерисовывать отсортировав по содержимому свойства Text. Можно это как нибудь красиво сделать через linq в одну строку или только цикл?
>>798532 Эффективность пока не важна, хочу разобраться с linq >>798541 Да уверен. Потом может вместо лейбелов будут другие элементы. Интересует именно как отсортировать ControlCollection формы.
Читаю Троелсена. Я конечно понимаю, что введение - это введение, но где найти книг по EF 6 и WCF? А то после подробных объяснений базисных и не очень конструкций такая абстракция вообще не в радость. Особенно, когда пример WCF на основе службы Windows не работает
>>798740 Не знаю, базис по C# 6.0, TPL и LINQ зашёл, а вот EF 6.0 и WCF нет, хотя последний норм. Надеюсь, что WPF нормально пройдет, а ASP.NET у Адама изучу его.
>>797962 >>797970 может ли лок принять Task.Delay??? мне во втором пункте еще нужна приостановка после смены IP, если делать через тред слип, у меня весь поток повиснит
Простите на верно ньюфажеский вопрос но никак не могу понять где в C# защита от идиотов вводящих неверные данные? Вот казалось бы простейшая прога. Но если пользователь введет текст, она вылетает.
int i = Int32.Parse(Console.ReadLine()); i++; Console.WriteLine(i);
В Си я в таком случае ставил while ( Пользователь ввел хуйню) {Пусть вводит еще раз} И все работало, а здесь из-за вылета такого не получается.
Может есть какой то более простой способ получать числа с ввода, который бы не вылетал?
>>796176 В каких из этих книг объясняется именно шарп и только шарп(т.е. LINQ, делегаты и т.д.), а не разжёвывается, что такое класс и что такое функция?
Пытался осилить когда-то несколько книг по шарпу - не смог. Они все начинаются с объясния крайне элементарных вещей вида "чтобы сложить переменную a и переменную b, напишите a + b". Мне от таких вещей становилось крайне скучно и я забивал.
В шарп чуть-чуть могу, но без всяких фич вроде лямбд и делегатов. Класс создать могу, метод написать могу, из стандартной библиотеки функцию вызвать могу. В принципе, больше ничего и не могу.
>>799109 почитай конкретные главы троелсена и все. если тебе становится скучно, пропускай до сделующей главы. в чем проблемс? нет таких книг, которые не сначала, но и не о сложном. люди, как правило, системно подходят к обучению
Привет ) я нуб хочу быть супер убер прогером и зарабатывать милион в секунду , а если по делу хочу вкатится в тему именно С# ,по средствам обучения индивидуального )хочу узнать у гуру ,если тут такие есть сколько приблизительно надо времени для того что бы хоть джуном стать )за ранее благодарю
>>799214 Ага есть такой косяк ,для передачи доброжелательных намерений. Так все-таки может подскажите как лучше учить ? И критерии джуна на С#?и какое ориентировочное количество часов брать ?
>>799228 Я пытался начать с Троэлсена , но как то не пошло по этому отыскал себе репетитора , я работаю и как бы времени не очень много . По этому я и спрашиваю у гуру что должен знать и уметь джун и сколько приблизительно часов придется оплатить репетирору ибо как бы бабки не малые )
>>799235 О папашки прогеры понабегали , когда есть желание и не особо времени и чуток денег лучше заплатить человеку который втеме и может объяснить нежели самому привозмагать
>>799233 Если не можешь в книги, то лучше не вкатывайся... Репетиторы тут не помогут, все эти курсы, стань успешным айтишником за 2 месяца йоба курсов - хуйня
>>799240 хзхз, имхо это будет тоже самое, что самоучеба + потраченные деньги. ну да, возможно, что-то тебе объяснят сразу, не придется расшибать лоб об гугол, но тут такое
>>799258 Я это осознаю ,но все-таки если рядом есть человек который поможет кой че объяснит и скоректирует в случае чего , и подскажет может из своего опыта я думаю это того стоит. Полюс стимул учится ибо бабки плочены
>>799264 Ну почитал я Троэлсена но как бы там нет заданий ,которые можно было бы делать , а задачек в инете особо не отыскал ) опять таки мотивация к быстрому усвоению инфы ибо я уже не купил то что очень хотел в пользу учебы . А остается в том дерьме в котором я сейчас с теми перспективами которые мне светят если не шевелится достаточно фиговые
Что за хрень в нем твориться с прозрачностью? Поставил у фигурки BackColor - Transparent и ее фон вместо того чтобы исчезнуть стал цвета окна. ВТФ, как это починить?
Короче есть такая функция: http://pastebin.com/v5L3eqS7 Помогите запустить ее на UWP. Выдает следующие: 'Delegate' does not contain a definition for 'CreateDelegate'
Через 3 часа собеседование на сисярп+дотнет макаку. Знаю почти ноль, обещают какое-то письменное. Что прочитать, чтобы знать немного побольше? Что меня там может ожидать?
2) Независимо от сложности объекта ты знаешь что никто его не может поменять. Ты можешь сохранить этот объект на любое время не боясь его изменения/необходимости синхронизации.
А чо, есть смысл покупать на торрентах энтерпрайр версию VS 2015, или рядовому еблану хватит и community версии? Имею ввиду, сильно ли урезана community edition?
>>799992 Гуглил, не нашёл ничего особо важного для себя на тостерах/мсднах/собсно майковском сайте, где указаны отличия версий но тут ведь возможно, что либо я пока что просто не пользовался функционалом, недоступным в комьюнити и доступным в других версиях, и когда узнаю, придётся перекачивать и всё такое, либо есть ещё какие то камни в испольовании комьюнити версии. И кстати, если купить на торрентах профессиональную/энтерпрайз и подкинуть ей легитимный ключ, обновления ведь всё равно будут приходить, или ребята в майкрософт чухнут, что я пиздюк и зобанят мне VS?
>>799990 Меня напрягло больше всего: 1) Отсутствие CodeLens (хорошо когда сразу видно кто ссылается на метод/класс) 2) Отсутствие возможность построить карту классов и их зависимостей. Решил значит рефакторингом заняться, а не понятно как найти наиболее связанные классы.
P.S. Есть конечно отдельные плагины, но они тоже платные.
>>796165 (OP) >2016 Просто хуею с тех кто что читает про WPF! Вы совсем ебанутые? Вы еще про сильверлайт почитайте или вебформс. Учите блять.Net Core и JS/TS, а лучше английский выучите уже наконец, пиздец нахуй
>>800056 Раздвигать булки по первому требованию тимлида и команды.
Первое время будешь весь день фикситьмелкие баги. Это будет обязательно в каком нибудь интерпрайзном говне, в котором тебе никто не поможет, тк его авторы уже умерли от старости/малярии в Индии.
>>800168 F# это OCaml и по синтаксису ближе к Haskel, а это значит конструкции типа: [1; 2; 5] |> List.map ((+) 1) |> List.filter (fun x -> x % 2 = 0) |> List.sum // 8 Зато хорошая поддержка .NET (и только его)
>>800182 На платят похуй, для кода под личные нужды надо, сишарп уже просто в одном месте. Вроде годный дотнет, студия и комьюнити, но от ООПа во всех щелях хочется вешаться.
>>799909 Репорчу результаты. У них занюханная конторка, работают они на апворке, штат-25 тел, к концу года планируют до 40 расширяться, как мне сказала эйчэрка. Находятся в здании какого-то то ли еще работающего, то ли уже нет горного института. Вопросы на собеседовании-хуйня полная, в плане сложности. Первый месяц они не оплачивают, потом при полной загрузке-20к. Екатеринбург. Полное говно кароч, послал их в жопу.
>>800187 > ООПа во всех щелях хочется вешаться В чем проблема? 1) First-class function - есть (Func<T>, Action<T> и тд) 2) Immutable структуры данных (списки, словари) - есть, а в C# 7.0 еще больше будет 3) Pattern maching - будет в 7.0
>>800195 Значит я просто ебанутый. Почему-то не получается, через месяц-два уже не могу распарсить своё скорописное функциональное дерьмо и проще написать с нуля, чем рефакторить в нормальный ООП.
>>796165 (OP) Гайз, хелпайте. Не могу понять, как дебажить консольное приложение в VS CODE? Как && что настроить? пикирелейтед
И алсо ещё вопрос: у меня цветовая тема для VS CODE одна: называется chelevra. Как бы мне её запихнуть в Visual Studio? Там разные форматы, а в маркете такой цветовой темы нет.
>>800252 > как дебажить консольное приложение в VS CODE Эту зеленую кнопку нажать не пробовал? И поменяй язык интерфейса на английский уже. Тебе самому не противно пользоваться такой локализацией?
Сап, дотнетач. Мне нужно из C# кода включить на удаленной машине групповую политику(пикрелейтед). У меня есть возможность запустить на удаленной машине PowerShell скрипт или просто выполнять отдельные команды в cmd.exe.
С помощью ProcMon мне удалось выяснить что после включения политики через ГУЙ в реестре создаются такие ключи: HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{какой-то страшный GUID}Machine\Software\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon\SyncForegroundPolicy
Судя по гуглу, просто взять и без задней мысли изменить свойство политики специальным командлетом нельзя т.к. такого командлета нет. Как мне совладать с групповой политикой? (про возможность создать ключи в реестре я знаю, но не понимаю откуда берется GUID)
>>800616 И нормально компилятся консольные приложения? Давно обновлял VS Code? До сих пор пытаюсь, чтобы дебажило. Ничего не получается. Мб версия баганая. Сегодня обновил. А раньше не чекал.
>>800686 Ладно, спасибо за помощь. Собираюсь использовать его тогда только как редактор кода, дебагать буду же, наверное, на Visual Stduio. Больно уж красивый этот VS Code.
Скоро буду обучать одного парня C# с нуля. Потом он хочет перейти на Unity. Он гуманитарий, английский знает. Как я планирую его обучать C#: скажу чтобы самостоятельно дома читал C# Players Guide, делал задачки оттуда, я прихожу к нему раз-два в неделю и мы разбираем, что у него не получилось, что не понятно. Что бы вы добавили или сделали по другому? Какие программы можно попробовать написать для закрепления материала (после прохождения книги или во время)?
>>801033 >одного парня Моя ванга прорицает, что тот парень - это девушка. >сделали по другому Лучше конфу сделай и сиди в ней по вечерам. Мотивация писать программы и сразу их показывать/обсуждать будет выше из-за быстрого отзыва. Идти домой лишнее, единственное исключение, если посиделки закончатся годным трахом.
У вас что, НЕТУ МНОЖЕСТВЕННОГО НАСЛЕДОВАНИЯ? Думал параллельно учить сисярп, но лучше возьмусь за свифт, лол. Ебаный стыд, нахуй. ООП язык без множественных наследований, блять.
>>800630 Тащемта кодить и знать теорию - разные вещи. Я, если честно, не смогу дать определение классу, с трудом на пальцах ещё что-то объясню, если надо, но это не мешает мне уметь в ООП.
>>801108 Плюсую, кстати. Я сам методами проб, ошибок, изучения чужого кода научился кодить. Вот ты сказал про класс и я понял, что не смогу объяснить - что это такое, зато применяю постоянно же. Вот что за хуйня?
>>801157 Это потому что ты на какие-нибудь объявления переменных ставишь брейкпоиты. Это не исполняемый код (на уровне байткода) и VS/Xamrin смещает их к ближайшему возможному месту для брейкпоита (начало функции).
>>801155 Вот ты злой такой. Обнять бы тебя и вместе так сидеть, чтобы ты не злился, а потом мы бы поцеловались, независимо от твоего пола. Просто хочу посидеть с тобой в обнимку, чтобы ты не злился!
>>801424 при геттайп() происходит боксирование жы а хэшкод виртуальная функция, к тому же, для значимых типов там вообще по дефолту идет рефлексия по полям/пропертям, кроче, для выброса НРЕ нужно постараться
>>801430 Подытожим: 1) Nullable как и любая структура не может хранить null, но имеет свои правила боксинга. 2) Nullable имеет особые правила боксинга: Runtime боксит не саму структуру, а ее Value. При этом он проверяет HasValue и если HasValue равно false, то возвращает null. https://msdn.microsoft.com/en-us/library/b3h38hb0(v=vs.110).aspx (раздел Boxing and Unboxing) 3) Метод GetType() не переопределен в Nullable<T>, по этому он вызывается у базового класса object в (C# все наследуется от object). Для этого Runtime приходится делать боксинг, а как мы знаем (2) там свои правила и возвращается null, это и вызвает NRE.
Закрепляющий пример на картинке: ToString() на int? не вызовет ошибки, но после боксинга к object, уже вызывает NRE
Как обработчику клика мыши передать определенную строку? Да, я знаю что можно воспользоваться наследником EventArgs, но проблема в том, что я не вызываю это событие гдето в коде явным образом, так как же передать по клику мыши строку в обработчик?
Господа, кто пишет под Core, подскажите - как заставить Serilog писать TState в логи (синк - RollingFile)? В консоли это всё отображается, а в файл писаться не хочет. По идее, TState должен автоматически добавляться к записи лога, по крайней мере так получается по исходникам Serilog. Может нужно как-то изменить outputFormat?
Чем в WPF отличаются друг между другом User control и Custom control? Что лучше использовать для кастомного datagrid'a? inb4 google.ru/... stackoverflow.com/... и прочие не надо позязя, я сам параллельно гуглю, просто вдруг какой нибудь анон сам может объяснить
Сап двощ мур мур мур мур. Расклад такой. Есть у меня 2 тачки: 1 - билд сервак с бамбу на моей стороне. 2 - виртуалка с iis на другой стороне океана. НА компе - Win 8 Enterprise
Какие есть ещё варики котаны? Можно конечно с билд сервака ложить зипку на удаленный, а там какой-то скрипт раз в 2 минуты чекает и распаковывает папку в нужное место. Но не хочется эту елду делать с нуля.
Подскажите где в VS можно настроить подсветку синтаксиса C#? Гугл вроде посылает в Options->Environment->Fonts and Colors Но там ничего не нахожу, в Text Editor только вижу настройки к C++ которые никак не влияют на C#.
>>803351 Не актуально. Другой вопрос. Есть код string[] words = text.Split(new char[] { ' ', '!', '.', ',', '\n' }, StringSplitOptions.RemoveEmptyEntries); var result = words.GroupBy(x => x) .Where(x => x.Count() > 0) .Select(x => new { Word = x.Key, Frequency = x.Count() });
var sortedres = result.OrderByDescending(x =>x.Frequency); foreach (var item in sortedres) { Console.WriteLine("Слово: {0}\tКоличество повторов: {1}", item.Word, item.Frequency); } Почему не работает '\n'? Надо чтоб учитывался перенос строки.
>>803455 предполагаю, потому что \r - символ спецвозврата каретки или как там мать её называют, а \n - спецсимвол перехода на новую строку. или наоборот, это лучше всего на мсдне проверить, если важно. итого, \r и \n - отдельные символы, следовательно, комбинация двух символов - уже строка, ну и видать отдельно символа \r\n не завезли в сисярп.
>>803450 \r Возврат каретки \n Новая строка (перевод строки) По факту, ты можешь сделать '\r','\n'. И он не являетя строкой. Если ты просмотришь некоторые доки на наличие байта \r, то поймешь почему так
Как правильно сюда дать ссылку на массив mas ? public void randmas() { Random r = new Random(); for (int i = 0; i < mas.Length; i++) { mas = r.Next(100); } }
Сисярпаны, возник вопрос. Нахуячил я некоторое количество контролов на формочку, все унаследованы от UserControl. И вот теперь в них во всех есть пара одинаковых совершенно флагов.
Выглядит это как то так public partial class MyControl : UserControl { public bool isNew = false; public bool isFirst = true; public MyControl() { InitializeComponent(); } }
Соответственно ечсть еще MyControl2, MyControl3, MyControl[n] и так далее. Прорблема в том, что мне сейчас надо все их обходить в цикле и проверять эти самые переменные. Но сделать это по человечекски не выходит, т.к. все они разные и надо каждому типу делать свой цикл и хуярить в него только контролы конкретного типа. Можно это как нибудь обойти?
>>803507 Берешь троелсена и ебошишь тему наследование Запили им интерфейс или абстрактный класс с определением тех булов. Затем наследуй от него и еби свои говноформы как хочешь. Вместо Object'а должен быть UserControl или любой другой базовый класс. Можно через интерфейс.
Ситуация следующая: есть WPF окно с DataGrid по ценру. В датагриде отображается контент, загружаемый с сервера. Окно можно ресайзить (вслед за ним ресайзится и датагрид). Проблема такая: когда датагрид видит, что с его текущей высотой не вмещается весь контент, он ресайзит себя либо до границ экрана по высоте, либо пока все не поместиться. Мне это нахуй не нужно, мне нужно чтобы отображался скролл в таком случае. Как этого добиться?
Выглядит в окне это все так: имеется грид с тремя строками. У первой и третьей фиксированая высота. У второй стоит minHeight. В эту строку и засунут датагрид.
>>803784 Как ты его меняешь? И какой тип возвращает smax? В любом случае, ты не ответишь на вопросы и поэтому я отвечаю заранее Convert.ToBoolean(smax(...)); или smax(...)>0
>>803789 >Пишу в методе тип Распаковываешь аля (bool)smax(...);? Эквивалент, но я хз, что у тебя пошло не так. >никакой Так то делегаты могут возвращать типы. Он служит контейнером для неизвестной заранее функции. Например, нажатие по кнопке. Хуй знает, что надо делать, при её нажатии. Поэтому ты говоришь делегату (пиздабол я - событию, который своего рода делегат), что тебе надо исполнить это. P.S. Изучай логику обратных вызовов в любой из областей. Хоть в схемотехнике. Работает также.
>Еще пара тупых задачек Задавай, но если будут огромные пробелы по синтаксису. Пошлю штрубить Троелсена
>>803803 Сука (горит уже), ты хотя бы кидал определения класса Book, который насилуешь. И да, не еби мозг сеттером
1. Не используй второй пикрилейтед, если не требуется проверка выставляемых данных. Ты можешь реализовать точно такую же конструкцию за счет автоматического свойства public string Author {get;set;} В такой конструкции и приватная переменная не нужна, потому что ты ничего не делаешь, по сути. В Java тебя бы заставили писать функции GetAuthor и SetAuthor, что в C# скрыто за словами get; set;
2. Приватные переменные начинаются с маленькой, а публичные с большой. Поэтому private string author = string.Empty; public string Author {get;set;}
3. String - ссылочный тип и поэтоу private string Author у тебя по умолчанию null. А присвоить ему значение нельзя, потому что ты не выделил память под него, поэтому либо ты используешь автоматическое свойство или пишешь private string author = string.Empty;
А еще, давай я помогу за денежку написать это говно, которое требует от тебя ВУЗик. Потому что чем дальше, тем больше вопросов у тебя будет. Скайп: live:sparin285
>>803823 >Сука (горит уже), ты хотя бы кидал определения класса Book, который насилуешь Закинуть весь код? Окей http://ideone.com/kYa4Qm >не еби мозг сеттером Это что?
>А еще, давай я помогу за денежку написать это говно, которое требует от тебя ВУЗик Заманчивое предложение, но увы. Да и толку от такой учебы, так я хотя бы строки кода до кучи собираю, а так вообще ничего не запомню.
Карач, я думаю, что всё проще, чем я думал. Ты объявил массив ссылочного типа. По умолчанию, ссылочный тип равен null. Прежде чем начать с ним работать, тебе необходимо выделить под него место, банально применив стандартный конструктор for(int i =0; i<10; i++) arrLib = new Book();
По факту, дописав в класс Lib public Lib() { for(int i =0; i<10; i++) arrLib = new Book(); }
И вообще, если хочешь понимать, что ты делаешь, то начни с Троелсена, имхо это уже базис идёт, за что здесь могут послать нахуй.
>>803828 Пару косяков нашел - забыл конструктор по умолчанию и при получении индекса массива надо отнимать еденицу, а не прибавлять. Дописал конструктор, однако проблема та же самая, говорит нет экземпляра обьекта. public Book() { Autor =""; Name=""; Publish=""; Printing=0; Price=0; }
Анон, срочный вопрос про WPF Есть стул с игрой, в которой используется отрисовка через Geometry и анимация по пути, который опять же Geometry. Что использовать, если без анимации не как? Visual, в котором непонятно как реализовывать анимацию, но производительный аки хуй? Или Shapes.Path, который поддерживает всё необходимое с избытком, из-за чего менее производительный? Ожидаемое количество объектов до 1000, из них половина анимированы. Хотя можно разделить на 500 Visual и 500 Shape, но это частичное извращение.
Киньте примеры анимации с использованием Visual, если не сложно.
Есть короче одно WPF приложение, в котором нужно сделать поиск по столбцам. Пытался было переделать стиль DataGridHeaderStyle, НО! в нём 2 обязательных именованных части - ректанглы, и чому то вставленный в грид текстбокс не отображается хоть убей. Делать КастомКонтрол тоже не получается, потому что не могу унаследовать класс кастом контрола от класса DataGridHeader, потому что его просто нет или я не нашёл. Поэтому, на данный момент мне в голову пришёл следующий вариант: сделать юзерконтрол, в котором вверху будет ряд текстбоксов в стекпанеле, а под стекпанелью датагрид, ну и собсна, сделать так, чтобы ширина текстбоксов совпадала с шириной столбцов DataGrid. НО! этот вариант мне кажется уберуёбищным, как тебе кажется, программач, имеет ли место такая реализация, или так пишут только мудаки и нужно ебать до смерти header'ы у самого DataGrid'a?
>>804100 ну у тебя в условие if функция не должна принимать значение, т.е. тело самой функции че там произойдет не учитывается, а в примере решарпера принимается аргумент, т.е. учитывается то, что происходит в теле. я убитый, как то так.
>>804114 > какой нахуй стиля!?!? > Так это оптимизация кода или оптимизация стиля его написания? Ну вот хули ты к словам препираешься, кроме тебя все все поняли и так. Я же выше написал: > Считается что отрицание в if уменьшают читаемость кода.
>>804121 > кроме тебя все все поняли и так. А это уже и не я, это какой то посторонний анон.
А у меня еще вопрос. Решарпер люто настаивает херачить половине методов модификатор private. Тут я как бы понимаю зачем ему это. Но стало интересно, отражается это как то на производительности или это просто секурность?
Поясните нубу за код. Он ищет файлы в указанной директории. Нашел в интернете, использовал, работает. Но я не очень понимаю, что такое IEnumerable, как работает и что с ним дальше делать. Прочитал, что это интерфейс. Я так понимаю на скрине функция. Я создал переменную типа IEnumerable и присвоил ей значение SafeEnumerateFiles(<мои аргументы>). Потом использовал foreach, чтобы достать все найденные значения. Все правильно сделал? Почему здесь нельзя было использовать массив или коллекцию, а нужен интерфейс и что это вообще такое?
>>804142 Да фиг его знаешь. Если есть возможность, то из public/private надо выбирать конечно private, что бы API/контракт класса был почище.
В C# если нет модификатора, то метод/поле считаются приватными, но при этом есть два подхода: 1. Resharper и Rider IDE (которая сделана на IDEA+Resharper) хочет явно это проставлять. 2. В XamarinStudio наоборот редактор подсказывает что "private" писать явно не обязательно и их можно удалить.
>>804148 > Почему здесь нельзя было использовать массив или коллекцию А кто сказал, что нельзя? Просто делаешь возвращаемому значению ToList или ToArray
>>804172 На 32 разрядных системах теоретически может оторажаться. Для публичных типов обычно генерируются более длинные ссылки. На 64 разрядной скорее всего даже в этом нет разницы.
>>804282 Бенчмарков полно, но к любому из них можно высказать обоснованные претензии. Вот известный бенчмарк, если кому-то интересно: http://benchmarksgame.alioth.debian.org/u64q/csharp.html Достаточно знать, что .NET и Java обладают сопоставимой скоростью, Mono, возможно, немного медленнее.
Где можно посмотреть код логики годного калькулятора? Пробовал написать сам - говно. Индуский код в гугле - говно. Хочу натырить заготовок граммотных на будущее
>>804570 >Не может написать каклькулятор >Говорит, что индусский код говно. Я так и не понял. Ты крутой или тупой? Чего ожидаешь от калькулятора? Применения паттернов/интерфейсов/дипенеденси инжекшена/просветления аллаха? это ж блять, калькулятор.
>>805070 есть какой-то адекватный способ использовать Route атрибуты на WebAPI, но при этом юзать MessageHandlerPipeline для той или иной группы маршрутов?
Есть один текст, который нужно заменить, причем что там - неизвестно. Сложно объяснить поэтому вот пример:
1. Пользователь выбирает файл 2. Вписывает данные в боксы Например Rate.Drop.Item.Poor (по дефолту, не изменяется) = 1 (введенное значение) Rate.Drop.Item.Normal = 2 Rate.Drop.Item.Uncommon = 3 3. Прога находит текст Rate.Drop.Item.Poor и заменяет цифру ПОСЛЕ этого текста 4. После замены всех цифр напротив каждого текста пользователь сохраняет файл и закрывает прогу.
Проблема в этой самой замене. После текста стоит несколько пробелов, каждый раз разное количество. Нужно как то пропустить эти пробелы со знаком равно и исправить только цифру. Напрямую через text.replace разумеется не получится. Я думаю что это как то решается через regex, но как именно?
>>805590 Тогда ASP.NET MVC, если хочешь куда-то вкатиться и что-то зарабатывать. А если хочешь кодить в свой досуг "для души", то кто ж тебя знает, что у тебя на душе. Кстати, в Unity можно делать и 2D игры. И это не единственный игровой движок/фреймворк, использующий шарп, есть еще как минимум Monogame и Xenko, правда, они в сумме не имеют 0,1% популярности Юнити, но зато опенсорсные, швятая швабода же. >>805631 Берёшь и вкатываешься. Ну реально, это ж самое востребованное направление разработки на C#, если в одну компанию не возьмут - иди в другую, если один туториал не понравится - изучай другой. Выбор большой. Или есть конкретные вопросы?
>>805663 Общие вопросы - я долго крестоблядствовал, но теперь хочу СИСЯРП. Порылся по HH, пришел к выводу что почти везде нужен ASP.NET, часто с MVC. Всё правильно понял? (А где нет ASP - там нужен Xamarin и/или Unity, да?)
Конкретные вопросы: Сколько времени нужно на вкатывание? (.NET не совсем чужд, баловался иногда, в MSIL код повтыкать если что - не побоюсь) Можно ли сразу смотреть ASP.NET 5 или он ещё мало где? Какой туториал посоветуешь? На какую вилку рассчитывать (ДС2)?
>>805667 >везде нужен ASP.NET, часто с MVC Не везде, но самое распространённое. Для новых проектов - только MVC, для легаси - нередко ASP.NET WebForms. >(А где нет ASP - там нужен Xamarin и/или Unity, да?) Да. Особенно Unity. Есть ещё вымирающая ниша десктопных приложений, но полностью она не вымрет никогда. >Сколько времени нужно на вкатывание? (.NET не совсем чужд, баловался иногда, в MSIL код повтыкать если что - не побоюсь) Смотря кем. Джуниором так наверное прямо сейчас, судя по тому, как ты себя описываешь, но захочешь ли ты? Вообще я думаю, что с твоим опытом ты можешь хотя бы примерно представлять, что требуется от разработчика (не именно C#, а вообще) и сколько времени нужно, чтобы это изучить. Думаю, в C# примерно также, только порог вхождения ниже. >в MSIL код повтыкать если что - не побоюсь Это от среднего кодера и не требуется. >Можно ли сразу смотреть ASP.NET 5 или он ещё мало где? Он же вроде переименовал в ASP.NET Core. И да, он мало где, но изучать можно уже сейчас. >Какой туториал посоветуешь? Именно по ASP.NET?
>>805678 >Смотря кем. Джуниором так наверное прямо сейчас, судя по тому, как ты себя описываешь, но захочешь ли ты? А таки что мне еще остаётся? (Это риторический вопрос - выже джуна я прямо вот сразу пока не готов. Но побыть джуном - почему бы и нет?) >Это от среднего кодера и не требуется. Часто бывало интересно посмотреть как что работает (в плюсах тоже) >И да, он мало где, но изучать можно уже сейчас. Я к тому чтобы не получилось, что я весь такой модный а у всех Говно.Мамонта 3.0 (прости, вообще не в теме пока что) >Именно по ASP.NET? Да, по нему и по MVC. Шарп сам по себе я и сам вспомню.
>>805669 > > На какую вилку >Ту, котрой чистят нужники Что ты злой такой? Все когда то были джунами, но не задарма же.
Создать текстовый файл в той же директории, где и исполняемый файл приложения, если файл с таким именем уже существует, то заменить в нем весь текст новым текстом(удалить весь текст и записать по-новому).
Не имею корочки ботана технаря, но хочу пойти на работу в сисярп, для начала за еду. Хочу сделать какой нибудь резюме проектик что бы показать что я умею, че бля можно сделать такого что бы не обосраться?
>>805973 [code] using (System.IO.StreamReader SR = new StreamReader(new FileStream(directorystring,...,FileMode.Create),Encoding.GetEncoding(1251)) { while(yourCondition) \tSR.WriteLine(yourstring); } [/code]
Сап, сишарпач, пилю небольшой бложик на asp.net core и тут у меня возник вопрос, есть куча вью-моделей в которых есть одинаковые поля уровня Id, Name и т.д., если я создам 1 абстрактный базовый класс и буду от него наследовать в другие вью-модели, будет ли корректно это работать с седьмым ef'ом? Или забить на наследование и оставить дубликаты как есть? В первом варианте по идее контекст будет держать что - то уровня : public DbSet<MyBaseAbstractClassViewModel> Model;
во втором появляется куча объявлений уровня public DbSet<TagViewModel> Tags; public DbSet<PostViewModel> Post;
>>805684 Для джуна, наверное, достаточно знать сам язык C#, общие принципы веб-разработки и изучить ASP.NET MVC. >Да, по нему и по MVC. Шарп сам по себе я и сам вспомню. Вот устаревший на 3 года туториал: https://habrahabr.ru/post/175999/. Но даёт хорошее представление о том, как в принципе устроен фреймворк.
>>805948 Да, но это не так просто. 50% заказов для фрилансеров, хоть как-то связанных с программированием, - это сайтики на вордпрессе. Ещё 25 % приходится на другие виды пхп-говна. И 25 % на прочие языки, из них может 3 или 5 % .NET.
Товарищи, есть вопрос. Хочу сделать клиент для сбора статы по говногейм. Отправляю реквест, получаю в ответ json, библиотекой пытаюсь разобрать json на класс(ибо в инфо библиотеки говорится, что так правильно), однако разобрать возможно только в случае совпадения названия класса, а название класса меняется в зависимости от ника, как реализовывать?
Когда слышишь о предшественниках C#, из которых он заимствовал концепции, обычно слышишь о Java, C++ и Delphi.
С первым случаем всё понятно, со вторым более-менее, а насчёт третьего - что такого специфического (чего нет в Java или C++) создатели C# взяли у Делфи? Насколько я помню, там даже полноценного сборщика мусора нет.
Начал учить асинки. Есть метод, который добавляет обьект в контекст. public async Task AddYoba(Yoba yobik) { db.Yobas.Add(yobik); await db.SaveChangesAsync(); } Когда я вызываю его дальше в коде await db.AddYoba(someYoba); Он крашится сетуя на налл. Без авейта(синхронно) работает нормально. В чем проблем?
>>806634 по выходу из блока оператора using у созданных в скобках оператора потоках/любых других классов, реализующих IDisposable, вызывается .Dispose(), что вроде как включает в себя .Close()
Нюфаня в треде. Из программирования освоил только HTML(не смейтесь). Есть 2 вопроса: 1) По шкале от 1 до 10, на сколько сложен C# для изучения с нуля? 2) Смогу ли я кодить примитивные проги в Unity? Просто я на нём как-то пилил 2D поатыормеры, и мне понравился drag-and-drop интерфейс.
>>806671 Не ссы, 0/10. Я за 2 месяца ОЧЕНЬ ленивого обучения (3-4 часа в неделю) написал пару хеллоуворлдов с использованием БД, парсер для авито на WinForms и раннер на юнити. Десктоп проги делай в VisualStudio, там тот же драгндроп только ещё удобней.
>>796165 (OP) Господа, самостоятельно копошусь на первых этапах связок с БД. Возник вопрос, как можно вместо уебищного аксессоподобного датагридвью делать простые таблички для вывода на форму?
Сап. У меня есть приложение автотестов. В тестах мне понадобилось залазить в почту гугловскую чтобы проверять полученное в ходе выполнения теста письмо. Дело в том, что автотест всегда выполняется на пересозданной виртуалке, поэтому каждый раз нужно проходить двухфакторную аутентификацию, а автотест не имеет доступа к этому окну. Есть ли какой-то способ получить доступ к ящику только по креденшелам?
>>806879 1. А разве она как-то выключается? Я уже сотни всяких мануалов посмотрел, кругом оно юзается (т.е. окошко с пермисиями нужно кликнуть, перед тем как апи заработает). 2. Ну так вроде самый распространенный почтовик. Что, если не его?
>>806874 у гугела раньше были так называемые пароли приложений. т.е. в ящик с браузера зайти было по нему нельзя, ток используя соответствующие ендпоинты. как с этим сейчас - не знаю
>>806676 Visual Studio нет. Есть MonoDevelop, Xamarin Studio (по идее, её можно использовать не только для создания Xamarin-приложений, кажется, она форк MonoDevelop или что-то в этом роде) и вскоре будет Rider (я так понимаю, платный).
Нафаня итт. Нашел я на сайте CyberBionic Systematics(ITVDN) такую хуёвину пик, на которой сказано что если вы захотите вкатываться во фронтэнд, то нужно обязательно пройти первую ветвь .net. Так-ли это? Или она нужна только для бекэнда и тд? Хотя на том же сайте я нашел 2 пик, на котором в предварительных требованиях не указано обязательно знание 1 ветви. Или я что то не понимаю?
>>806372 Не вздумай читать ето говно Автор туториала так топорно пишет, что желание отпадает читать дальше на втором уроке. Лучше унылого хохла с ITVDN послушай.
>>807083 Ошибся, Ивано-Франковск (но это примерно то же что и Тернополь). Это если мы об одном и том же авторе говорим, я лично о хабровском туториале по ASP.NET MVC: https://habrahabr.ru/users/chernikov/
Причина простая - нет особого выбора. В последнее время много работаю с excell'ем, в котором искаропки отсутствует нужная мне функциональность. Сам я учусь по "C# players guide", но возможности писать напрямую C#-код там нет. Искал трансляторы кода, почти все они говно, а те что не говно - все равно надо в коде хорошо разбираться. Мало того, в этом excell'е используется дремучий VBA, но если уж вступать в это говно, то пусть уж будет .NET. Вот и все.
>>807226 ну логика как бы подсказывает, что без наличия доступа к серверу, нехрен туда лезть. по крайней мере, именно таким бы образом я бы и выстраивал
>>807270 sql студейка то не всегда находит, а ты хочешь. Если фаервол блокирует - ты ничем не подключишься, если порт другой - никто не найдет, можешь только все порты на всех устройствах посканить, а если сервер только локалхост слушает, а если named pipes, а если... Выбери себе только нужные варианты, а не всю вселенную.
>>807282 И да, плюсую тот совет про скл запрос, если инстанса просто нет - будет одна ошибка, если есть, но логин/пароль не подходят - другая, если подходят - безопасность протекла.
Похоже этот подход через пинг геморный и не 100% рабочий. Решил открывать подключение с левым именем, если напишет что логин не подошел это значит по любому сервер уже нашелся.
>>807270 Как вариант получать список процессов, искать скуль и по айди в списке активных тцп получать слушаемый порт. А так если установка нестандартная то больше никак.
В WPF кто нибудь пользовался wpf toolkit от xceed, в частности их DataGridControl из community version? Есть ли возможность такого же кастомайза их DataGrid'a, как и родного от майкрософта? И еще, ни у кого случайно нету ссылки на источник подробного гайда по кастомайзу родного DataGrid в WPF?
Привет, /пр. У меня есть нулевой опыт в программировании, некоторый пассивный доход с продуктов компьютерной графики, кириллистическая мечта и бесконечность свободного времени. Собственно, есть пару вопросов которые серьёзнее, чем может показаться из-за манеры изложения.
Хочу зделоть свой гениальный онлайн-шутер от первого лица, суть такова: графон на уровне тим-фортесс говна и веток, не высокое требование к железу, чтобы сервера были как в контер-страйках и конченный пользователь мог в джва клика скачать и захостить свой сервер.
После пары статей и видео на ютубе на общею тематику про деланье игор и поверхностные обзоры скриптовых языков, решил изучить Си шарп и Юнити для реализации того, что описал выше. Всё правильно сделал? Какие подводные камни?
>>807656 Полехчи паринь, я уже спиздил твою идею. Релиз на следующей неделе. Хотя идея мне не нра, нет изначального повода донатить и корная тусовка может не собраться. А без нее игорь умрет, тихие сервера без нищебродов, но с визгливыми школьниками-мажорчиками будут как никогда тихими.
>>807183 А джавафанатики почему? >>807190 VBA и VB.NET - это разные языки, я не уверен, что изучение одного поможет в изучении другого. Точнее нет - поможет (уж синтаксис-то точно должен быть похожий), но всё равно придёться знать именно VBA.
>>807183 Вообще смешно, что такую репутацию имеет мощный современный язык, в котором есть полноценное ООП, полноценные generics, лямбды, LINQ, Async/Await и много чего ещё, в т. ч. то, о чём джависты могут только мечтать.
Все нормально работает ничего не подвисает, в лейбл все выводится проценты и спокойно могу работать с программой, пока фоново там что-то делается. А вот запускаю код по ссылке в начале где server.Connect весь интерфейс нахуй зависает нельзя ничего сделать и в конце когда уже соединился с сервером, выдает "DONE" и все отвисает, я нихуя не пойму, я же вынес его в отдельный поток, почему он подвешивает основной?
Анисовки, как лучше разрулить этот момент? Есть набор проксей, из них явно дохуя нерабочих. Чекаю их запросом к определённому url, приходит Json. Как я могу прикрутить к этому асинхронность? Сейчас работает очень грустно, тк если сервер молчит, то поток виснет на 10-15 секунд. [code] _webRequest = (HttpWebRequest)WebRequest.Create(url); WebProxy myproxy = new WebProxy(proxy.ToString()) {BypassProxyOnLocal = false}; _webRequest.Proxy = myproxy; _webRequest.Method = "GET"; try { HttpWebResponse response = (HttpWebResponse)_webRequest.GetResponse(); _logger.Items.Add($"Work! {proxy.ToString()}"); } catch (Exception e) { _logger.Items.Add($"{e.Message} with {proxy.ToString()}"); return false; } [/code] И на пасте. http://pastebin.com/F7YntniY я ещё нюфаня если чё
>>808228 ну только учти, что в тот момент когда ты завалишь асинхронность ее много где по прилаге придётся протаскивать. Плохого в этом ничего нету. но важно не забыть.
>>808215 грят, мнение "специалиста" с рутрекера про wpf лучше читать "MacDonald M. - Pro WPF 4.5 in C#. Windows Presentation Foundation in .NET 4.5 (The Experts Voice in .NET) - 2012", но мне не особо помог, хотя я не интересовался детально MVVM и прочими глубокими теоретическими знаниями (хотя там есть инфа и про mvvm, DI и прочее), меня больше интересовали некоторые контролы и основы стайлинга и шаблонов, дак вот, в книгах нихуя такого нету, где приводились бы реально сложные и интересные шаблоны/стили. я пришёл к выводу, что все эти книги лично для меня бесполезны, и объясняют там элементарнейшие основы, которые проще и быстрее загуглить.
Как же мне горит от этого ебаного Зимарина. Там ошибка, там пакет не встает, включи хайпер ви для мертвого виндофона, а андроид уже не запускается и наоборот, про ебаном с яблока я вообще молчу. Зачем эту сырую парашу продвигают
On a main page must placed 2 input box, and submit button In one input will enter the command that needs to be run. For example: "git log" In the second path to the folder where you have to run the command
On button click execute commnad
After command will execute you must show command output and spend time
The advantage is: Implement log Implement the ability to interrupt command
>>809030 Кто такую хуиту вообще проектирует? В один массив -> Подставить minDate в начало и maxDate в конец -> Можно добавить if на удаление даты, если она повторяет minDate/maxDate (Следственно, не добавляем minDate/maxDate) -> сформировать обратно ебанутую кострукцию двумерного массива
Анон, есть MediaElement и различные объекты с анимацией в лице других Storyboard. Можно ли как-нибудь устроить merge для них или сделать привязку к головному Storyboard? А то переделывать Storyboard в коллекцию Animation, а затем добавление в головной Storyboard не хочется. + Управление уникальными Storyboard проще.
Еще проще. Мне нужно сделать привязку по времени многих элементов со своей анимацией (разница лишь в длительности анимации) к MediaElement со своим Timelin'ом в виде видео. Карач, единый старт для всей анимации с минимальными потерями.
>>809072 1. Преобразовываешь двумерный массив в List<DateTime>, при помощи LINQ 2. Insert minDate и maxDate по концам 3. Формируешь двумерный массив обратно 4. return
Это должно быть быстрее, чем перебор, поэтому это решение должно их удовлетворять. Но я бы сделал проверку крайних элементов на эквивалентность minDate и maxDate, чтобы не было пары из { minDate, minDate };
Подскажите, как правильно сделать авторизацию на клиентском приложении на .aspx сайте через webclient. Суть задачи: надо авторизоваться на сайте и скачать файлик по uri в клиентском приложении. Клиент вводит свой логин пароль сам. Приложение к сайту прямого отношения не имеет, поэтому все вынужден делать на стороне клиента.
>>809121 вб такой же древний, как, к примеру, делфи. если бы то дотнет не ставил за цель интеграцию всех совместимых языков под крышей одного рантайма, то бейсик остался и дальше архаичным говном для макросов мс ворд (я знаю, что вба != вб) и преложэний заводских программистишек
Есть ли какие-нибудь интерактивные курсики по типу платформы stepic по си шарпу? Просто дело в том, что я могу обучаться только с клоунами, которые прыгают вокруг меня, а с книгами это весьма проблематично...
Анон, я тут учу сисярпы уже целую неделю, и не могу понять нахуй нужны конструкции типа {get; set;}. Они что, типа ограничивают поля на чтение и запись? Если только get, то мы можем читать данные из поля, но повлиять ни на что не сможем? И set - это изменять их?
Как вообще это можно сформулировать на человеческом языке? Алсо, в каких случаях следует юзать get-set фичи?
>>809758 На заре инкапсуляции посоны сказали что поля не должны выпирать наружу, обращайтесь к ним только через методы getYoba() и setYoba(Yoba yoba). Ну и все согласились. Потом мама-курочка говорит папе-курочке: чет я забался бойлерплейт писать)), давай накинем сахарку! И накинули. Теперь это уже Yoba {get;set;}. А цыплятки потом: да вы охуели там штоле блядь, как теперь readonly property то делать? РУКАМИ? Так оно стало Yoba {get;} >в каких случаях следует юзать get-set фичи Во всех!
>>809758 На практике - я чаще всего использую auto properties для того, чтобы разграничить доступ на запись и на чтение. Например
public double CockLength { get; private set; }
Если и get, и set имеют один модификатор доступа, то смысла использовать их вместо обычных полей, на мой взгляд, нет. Хотя если совсем угореть по ООП, то по идее все поля должны быть приватными, а всё публичное - properties.
А вообще что такое properties ты читал? Если нет, то сначала разберись, что это вообще такое.
>>809830 >А цыплятки потом: да вы охуели там штоле блядь, как теперь readonly property то делать? РУКАМИ? Так оно стало Yoba {get;} А его можно задать в конструкторе, кстати?
>>809845 Большинство - разумеется нет. Но я реально не вижу причин использовать проперти, если и геттер, и сеттер публичные и не используют никаких проверок. Если что, переделать поле в проперти можно в любой момент.
>>809856 в предыдущей конторе перешли на 6 чуть менее года назад
>>809857 ну, логика get/set всегда может измениться без последствий. но, например, как параметр ref/out проперти уже не заюзаешь (пример так себе канеш)
>>809857 >переделать поле в проперти можно в любой момент Через тред такая фраза встречается, каждый раз советуют вспомнить, что от когда от твоего кода зависят другие библиотечки и ты поменял поле на свойство - то их придется перекомпилить, если ты просто поменял логику в геттере/сеттере - не придется.
Анончики, нужно написать программу, используя WinForms, суть такова: Есть 4 drop-down ComboBox списка, каждый зависит от предыдущего. Например - планета, страна, город, улица. Программа должна иметь следующие возможности: 1. При выборе планета => страна => город => улица показывать кол-во домов. 2. Возможность изменить/добавить/удалить запись.
Все возможные варианты с соответсвующим количеством домов записаны в CSV файл, каждая строка - отдельный вариант: {планета,страна,город,улица : кол-во домов}.
Как это вообще реализуется? Да, забыл добавить, все что я нагуглил использует DataBinding и SQL, что логично, но я учусь по "C# Player's Guide", и до этого еще не дошел. Что лучше всего использовать? Список массивов? Dictionary?
>>809978 > Список массивов Ты c# вообще? Список твоих моделей конечно же. Ты либо сам парсишь csv, либо да, ты же учишься. Ну а потом ехал linq через linq.
>>810115 Почему эта хуйня такая глючная, даже хелловорд не запускается без 100500 ерроров? Интересно, Майкрософт хотя бы сделает из неё что то удобоваримое, а то пиздц же.
>>810214 Глючная была год назад. Уже сейчас достаточно стабильная. Юзаю формс на вижле 2015 комьюнити. Пишу под иос и дроид. Есть конечно нюансы, но не так, чтобы совсем уж всё плохо.
>>810299 ничего не могу сказать, анон. Я читал сначала троелсена, потом рихтера.
Этого предостаточно для того, чтобы понять как что работает. Последнего перечитываю иногда (всмысле избранные главы). Если товарищ Хйлсберг годный перец, а он годный, ведь именно он и создавал с#, то смело можешь читать его. Хз правда, на каком уровне его книги. Ну то есть насколько глубоко он поясняет.
>>810344 будешь долбиться в жопу. Девэкспрес хорошо только на самплах. как только ты захочешь что-то кастоймазить (а тебе неприменно блять это понадобится) - ты проиграл. Сам юзал эту хуйню на впф и на мвс. Знаю о чем речь идёт.
Мне надо поискать запрос в гугле и считать ссылки на первые несколько результатов. Поискал решение, охуел от сложности. Можно как-то попроще сделать это? Мне не нужно блять свою поисковую систему создавать, как предлагает гугол. Вот тут http://stackoverflow.com/questions/18389714/search-keywords-in-google-through-c-sharp-window-application самый нижний ответ норм, но там он юзает API, где мне его скачать-то? К удивлению нихуя найти не смог
>>810594 На удивление, читать ты вообще не умеешь >Можно как-то попроще сделать это? Мне не нужно блять свою поисковую систему создавать, как предлагает гугол.
>>810596 ты поехал, какую поисковую систему? > var client = new GwebSearchClient("http://www.google.com"); > var results = client.Search("google api for .NET", 100); это все, что тебе надо, только вместо ста - int.max или допустимое для апи значение
>>810601 Да я поехал, потому что блять хуйня, на которую я планировал потратить 5 минут, превратилась в занозу в жопе. Ну установил я через эту ебаную консольку кастомсёрч. Пишу: >using Google.Apis; про твой код он вообще ничего не знает, подчеркивает.
Пишу как нашел в интронете: >string apiKey = "ключ"; >Google.Apis.Customsearch.v1.CustomsearchService svc = new Google.Apis.Customsearch.v1.CustomsearchService(); >svc.Key = apiKey; Подчеркивает svc.Key мол не знает о таком. И куда мне ключ писать тогда? Просто пиздос
>>810112 >>810000 Так, так, спасибо, направление я понял. И очень рад, что дошел до этого сам, я не безнадежен! Значит так, поправь меня если не так: 1. Каждая строка в CSV формируется в объект, поля которого - ряды в этой строке. 2. Этот объект добавляется в список объектов. 3. С помощью LINQ можно уже извращаться с объектами.
Можно пожалуйста ссылку на похожий код для изучения? Спасибо.
>>810811 Нет нет нет, пиши сам. >>810944 Bindings to the rescue! Можешь сразу забиндить свойства текстбоксов на радиобаттон или почитать mvvm и забиндить свойства контролов на свойство viewmodel
>>810944 <RadioButton Name="rbAlreadyHas" FontSize="18" GroupName="rbGroup" Checked="rbAlreadyHas_Checked"> Я уже зарегестрирован в системе </RadioButton> <ComboBox Name="cbRegisteredUsers" FontSize="18" IsEnabled="{Binding Path=Checked, UpdateSourceTrigger=PropertyChanged, ElementName=rbAlreadyHas}"/>
пробовал вот так, не пашет. только выключает мой комбобокс и все, все зависимости от радиобатона
>>810959 Попробуй забиндить на IsChecked, потому что биндить на event здорово, но как то выбивается из концепции. >>810960 Лучше раньше чем позже. Без этого у тебя получится windows forms 2.0, и хотя концепция тебе знакома и ты все быстро напишешь, и, как следствие, не будешь выебан в сраку, это не wpf way.
<RadioButton Name="rbAlreadyHas" FontSize="18" GroupName="rbGroup" Checked="rbAlreadyHas_Checked"> Я уже зарегестрирован в системе </RadioButton> <ComboBox Name="cbRegisteredUsers" FontSize="18" IsEnabled="{Binding Path=IsChecked, ElementName=rbAlreadyHas }"/>
блять, пришлось написать обработчик. винформс 2.0 блят
Сап, сишарпач, есть один вопрос: Есть несколько viewmodel's и обычных моделей, которые сохраняют в базу данных соответственно, речь про MVC, и в каждом экземпляре есть конструктор, который принимает вьюмодель и устанавливает значения соответственно, так вот, оставить конструкторы для каждой модели, или вынести все это в йоба-фабрику? Ещё я видел где-то на гитхабе что делали не через абстрактную фабрику, а через большой статический класс, который возвращал экземпляры уровня Post->PostViewModel, PostViewModel->Post, как сделать - то?
для конвертации из модели во вм можно использовать любую из библиотек-мапперов. для наоборот можно обойтись чем-угодно, хоть методами-расширения, вопрос в том, что и как ты используешь
>>811045 Я понимаю, я про то, чтобы создать отдельную фабрику, чтобы не писать каждый раз в контроллерах что - то уровня: Mapper.Map<ModelName>(viewModel); или var model = new Model(viewModel);
а создать одну большую фабрику, которая будет все это выполнять, например var model = ModelFactory.Create(viewModel); вот вариант статической "фабрики", который я видел, я и хочу узнать как лучше.
>>810954 >Нет нет нет, пиши сам. Я так и собирался, но хотелось бы сравнить с кодом того, кто действительно умеет программировать. И еще один вопрос, если можно: Когда я выбираю все объекты с определенной планетой (a => a.Planet == Mars), как составить список ну или массив всех возможных стран на этой планете? Естественно, без повторений, чтобы можно было скормить этот список стран в формочку, когда выбирается определенная планета. Гуглится только "removing duplicates using LINQ", а мне надо не убирать повторы, а изначально составлять список без повторов. Спасибо большое.
>>810959 если у тебя нет никакой другой логики для переключения радиобатона и вообще, почему не чекбокс? разве не логичнее его использовать?, то убирай нахуй обработчик события Checked у него, дай радиобатону имя (x:name = anything), и в комбобоксе или что ты там выключать собрался пифы: <Combobox ... IsEnabled = "{Binding ElementName = anything, Path = IsChecked ВОЗМОЖНО понадобится вот это ещё: NotifyOnSourceUpdate = True, UpdateSourceTrigger = PropertyChanged}" />
програмач, такая задача: надо достать из интернета строки (песни из ласт фа апи, если кому интересно). Допустим у меня 2к реквестов (песен) и мне надо получить ответ максимально быстро, и тут у меня назревают проблемы: если делать через один HttpClient, то это будет долго, так как даже если я накатаю ему много реквестов через GetStringAsync, то через одно соединение он все равно все будет делать последовательно. А еще все это надо как-то завернуть в многопоточность и организовать вытаскивание этих 2к песен (из файла) из этих потоков, чтоб потокобезопасно корочеё Итак, прошу бородачей предложить мне оптимальный вариант, ведь это не так просто, как кажется на первый взгляд если кому интересно - позже накатаю свой вариант, но не кажется мне идеальным
Котаны, есть у меня 3 контроллера, по методу в каждом из них, что ищет посты по категории/тегу/тексту, так вот, шаблон для маршрута в стартапе замапен, и все работает, но, я хочу сделать так, чтобы 3 разных маршрута возвращали одну вьюшку, например Category/Development/1 Tag/C#/1 и Search/Hello/1 всегда вызывали одно действие в определенном контроллере, модель в вьюшку передается всегда одна и та же соот., так вот, если я закину 3 метода в один контроллер и пропишу 3 аттрибута [Route()] над одним действием, будет ли это работать?И есть ли другой способ или я просто выбрал неудачную архитектуру?
Есть абстрактный класс A, в котором есть абстрактный метод. Есть класс B, в котором нужно перезаписать абстрактный метод класса A, но без наследования B от A. Чтобы прям в конструкторе класса B повесить код в абстрактный метод класса A. Чтобы как в джаве. Как сделать?
Есть кто-нибудь, кто уже знаком с подписями и сертификатами? Я тут приложение сделал, а оказалось, что на других комплюктерах при запуске выдается предупреждение о неизвестном издателе. Его, конечно, можно проигнорировать, но мне как-то не очень нравится, что такое происходит. Я тут уже перечитал кучу всякой хуеты, пройдя через все круги ада, в итоге после чтения тонн простынь (которые, кстати, абсолютно все посвящены очень старым версиям vs), пришел к выводу, что для нормального сертификата его вообще нужно покупать, а тестовый сертификат действителен всего несколько часов. В общем, я уже ничего не разбираю. Если кто разбирается и поможет нормально сказать, либо кинет ссыль, где все понятно описано, буду премного благодарен.
Ньюфаго-вопрос, прошу помочь. Хочу сделать рандомную генерацию матрицы из символов. Накидал на c# её реализацию, но почему-то создается лишь из одного символа случайного вся матрица. То бишь рандомный символ выбирается один раз и заполняет всю матрицу. Как это починить? Вот мой код: http://pastebin.com/L0fiprXK
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Литература вторым постом
1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/
2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- http://ideone.com/
- http://csharppad.com/
- http://www.tutorialspoint.com/compile_csharp_online.php
- http://rextester.com/l/csharp_online_compiler
3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# довольно активно развивается, недавно вышел новый компилятор, шестая версия шарпа, и уже активно разработывается седьмая. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.
5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ).
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.
6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, ставь сразу VS2015 и при установке выбирай все нужные компоненты.
Больше информации тут - https://msdn.microsoft.com/ru-ru/library/dn771552.aspx
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials
7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL
8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6
ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ
Код этой шапки: http://pastebin.com/cKKXYArs
Прошлый тред тонет здесь: https://2ch.hk/pr/res/766002.html