Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем 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 - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях
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 Async_hronous 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
>>708080 Не работает еще отладка core clr: > Q: What are the supported debugging scenarios? > A: Debugging of Node.js based applications is supported on Linux, OS X, and Windows. Debugging of C# applications running on Mono is supported on Linux and OS X. ASP.NET Core applications are compiled using the Roslyn compiler, not the Mono compiler. ASP.NET Core debugging will be available through a VS Code extension.
Анон, подскажи слоупоку.. Есть 2 папки: 1я-содержимое не трогаем 2я-найти файлы как в 1й, и их уладить. Оставить уникальные. Вова пишет так: цикл для массива 1{ цикл для массива 2{ если 1==2[y], удалят }} А теперь поговорим об оптимизации :3
>>708063 выполняет инструкции IL в общем-то, c#/vb.net/f# код копмиляется в инструкции IL, CLR компилит на лету это говно во что-то более машиннокодное и отдает на выполнение дале
господа, что делать если голова при работе становится ватной и ты перестаешь что-либо соображать, выполняя лишь базовые функции. Кофе, прогулка, тренировка? Не могу настроить себя на каждодневную, но короткую работу тк производительность труда стремительно падает. Старость, в 26 то лет?
>>708242 отвлекайся на что-нибудь, хобби себе найди) если я правильно понимаю, у меня такая же фигня. я это связываю с апатией от каждодневных if-else ибо заебало
>>708250 К примеру как в Scala, на то он и называется "Сопоставление с образцом". Так то можно сказать что и у swift (там есть аналогичная конструкция) есть ПМ.
Вот создатели kotlin, прямо заявляют что у них НЕТ ПМ, а есть просто авто-каст.
>>708063 вкратце - все языки дотнета компилируются в простой псевдоассемблер виртуальной машины, который уже во время исполнения компилируется в машинный код нужной платформы. собственно такой подход используется в быстро набирающих популярность LLVM компиляторах, разве что тут мы получаем "полуфабрикат", который докомпилируется потом а у ллвм оно сразу компилируется в бинарник.
профит в разделении задач разработчиков компилятора на 2 не связанных задачи. с одной стороны разработчику языка нужно реализовать только транслятор в промежуточный язык и не заморачивается оптимизацией под конкретное железо. с другой стороны низкоуровневая оптимизация ложится на разработчиков компилятора из промежуточного языка, которому уже пофик на особенности языка высшего уровня который был в оригинале - у него есть "простой" код для стековой машины.
>>708347 А по подробнее можно? Там ничего толкового кроме того, что [STAThread] используется для работы с СОМ-объектами ничо не связано. Меня интересует в чём будет разница работы треда с threadApartmentState MTA и STA. И что вообще такое single thread apartment? Типа все треды будут выполнятся на одном логическом ядре ЦПУ? Типа приложения на вин формс априори одноядерные?
>>708357 STA значит что ком-объекты не заточены под мультипоточность и работать с ними можно только из одного потока. в частности такая фигня с винформс
>>708364 Ну дак а в чём будет разница работы треда с threadApartmentState MTA и STA если я не использую СОМ-объекты? И что вообще такое thread apartment и в чём разница между single и multi кроме очевидного из перевода - сингл - один "апартамент", и мульти - много "апартаментов"? Апартаменты то это шо?
>>708370 в общем, все ответы в интернетах по поводу ThreadApartmentState сводятся к COMу, лол но, исходя из: http://stackoverflow.com/questions/127188/could-you-explain-sta-and-mta > The STA model is used for ХУЙ objects that are not thread safe т.е. представляй себе ситуацию, когда ты ни в коем хуе не сможешь синхронизировать стейт какого-то объекта в многопоточном окружении и вот тут какой-то даун, не применив презерватив со специальной смазкой пытается доступаться к объекту. в этом случае тебе нужно чекать: - можно ли тыкать объект в многопоточном окружении (если нет, то) - является ли тред, с которого идет попытка доступиться к объекту тем, в котором он (объект) и был создан я так думаю, что пропертю ThreadApartmentState добавили конкретно для такого алгоритма
>>708477 не, она больше о внутреностях. как работает виртуальная машина дотнета, во что скомпилируется твой код и прочая. стилистика тут не при чем воопше. более того в шарпе обычно куча способов написать разный код, который скомпилируется одинаково. т.е. базово что-то вроде var a = from i in list where i % 2 == 0 select i; IEnumerable<int> a = list.Where(i => i%2 == 0); даст полностью одинаковый код.
>>708477 Это достаточно веселая книга, где стандартные вещи (ну методы там, константы, поля, ивенты) рассматриваются на более низком уровне (на уровне IL обычно) + разные неочевидные вещи, например, связанные с виртуальными методами. Ну и про многопоточность там очень много чего интересного.
Пример. 1. Используем интерфейс IEnumerable IEnumerable<Student> students = db.Students; / обращаемся к репозиторию/ var oldStudents = students.Where(st => st.Age > 25).ToList(); / получим всех студентов старше 25 /
/ В этом случае сначала сервер БД отдаст клиенту (приложение) все элементы из таблицы 'Студенты' и только потом клиент (приложение) отфильтрует их по возрасту. На стороне БД выполнится только запрос вида: SELECT FROM STUDENTS /
2. Используем интерфейс IQueryable IQueryable<Student> students = db.Students; / обращаемся к репозиторию / var oldStudents = students.Where(st => st.Age > 25).ToList(); / получим всех студентов старше 25 /
/ В этом случае на стороне БД выполнится запрос вида: SELECT FROM STUDENTS WHERE AGE > 25 /
Но этот пример противоречит отложенному выполнению. Ведь запрос выполняется только при непосредственном перечислении или после использование ToList, ToArray и т. д.
>>708676 http://www.quizful.net/interview/csharp/ienumerable-vs-iqueryable Пример вот отсюда взял Только поменял myOrm.GetStudents() на db.Students, чтобы показать что непосредственно к Dbset обращение > первое - с чего вдруг в первом случае условие выполнится на стороне клиента? Вот я тоже не понял с чего они взяли это, там так утверждается и никто не против. Поэтому и спрашиваю
>>708682 Основам, синтаксису конкретно C#, а дальше уже сам найду лит-ру. Просто я сейчас Троелсена начал читать и чуть-чуть тяжело, чувство будто я дебил и читаю какие-то заклинания. Есть какие-то знаний о типах данных, что такое массив, но рабол с массивом я только в C когда учил C 4 года назад (а после этого забросил ибо не мог). Сейчас вот хочу заняться программированием.
значится смотри, суть в том что для IEnumerable<> и IQueryable<> определенные разные варианты экстеншен методов. т.е. при выполнении запроса в первом случае произойдет вызов Where(IEnumerable<>, Func) который вызовет получение енумератора из db.Students. т.е. простой запрос "Select from Students;"
во втором случае будет вызов совсем другого Where(IQueryable<>, Func), который вызовет синтаксический разбор серии экстеншенов и построение запроса "select from students where ..." но в обоих случаях данные из базы будут дергатся только по вызову ToList()
>>708692 ах да. так как в подавляющем большинстве случаев ирл будет написано var students = db.students или воопше db.students.Where(...) то разницу следует учитывать только при передаче таблицы как параметра.
>>708666 Да там только немного синтаксического сахара добавили, не более. Строковая интерполяция, например, раскрывается в String.Format, и с остальным все так же.
>>708692 То есть суть в том что к IEnumerable нельзя дописывать фильтры и все последующие вызовы экстеншен методов будут вызываться уже на последовательности в памяти?
>>708736 нет, суть в том что IQueryable проводит разбор экстеншенов для составления запроса к данным(что в частности приводит к некоторым ограничениям - в частности можно использовать только функции поддерживаемые провайдером, кастомное не пихнешь) а IEnumeration такого не умеет и просто применяет несколько фильтров к уже имеющейся последовательности.
IQueryable<Student> students = db.Students.Where(st => st.Age > 25); List<Student> newstudents = students.ToList(); Имею ввиду если вот так написать будет одинаковый запрос Select * from Students where Age > 5 Или тоже самое будет как тут >>708664 в первом случае будут всегда сначала выгружать всех студентов в память, а уже потом фильтры накладывать, а во втором полный запрос к БД с получением отфильтрованных данных?
>>708793 в это случае будет однохуйственно, потому что сначала строится выражение на db.Students а потом только приводится к IEnumerable.
вот если IEnumerable<Student> s = db.Students; var query = s.Where(st => st.Age > 25); то тут сначала загрузится все в память, а потом уже пойдет Where
>>708800 > в это случае будет однохуйственно, потому что сначала строится выражение на db.Students а потом только приводится к IEnumerable. Ну в этом собственно был и впорос. Если я присваиваю такое выражение к иенумеребл то все фильтры наложенные после этого будут наложены на данные в памяти а не в бд.
>>708812 >Если я присваиваю такое выражение к иенумеребл то все фильтры наложенные после этого будут наложены на данные в памяти а не в бд. нет. выражение уже собрано. то что ты присвоешь его потом иэнумерабле ничего не изменит. но в самом первом посте цепочка изначально строили на иенумерабле, что и вызовет загрузку всей таблицы
>>708857 т.е. цепочка linq вызовов уже собрана и готова к использованию IEnumerable<Student> students = db.Students.Where(st => st.Age > 25); List<Student> newstudents = students.ToList();
развернется в нечто вроде IQuearable<Student> t1 = Queryable.Where(db.students, st=> st.age > 25); IEnumerable<Student> students = t1 as IEnumerable<Student>;
а предложенный первым вариант IEnumerable<Student> students = db.Students; / обращаемся к репозиторию/ var oldStudents = students.Where(st => st.Age > 25).ToList(); / получим всех студентов старше 25 / IEnumerable<Student> students = db.Students; IEnumerable<Student> old = Enumerable.Where(students, st => st.Age > 25);
>>708866 вариант первый(и правильный) - очевидно это JSON подключить JSON.NET и десериализовать объект. вариант второй(если не хочется тянуть лишние зависимости) - использовать регекспы
>>708800 вообще тут стоило сказать только одну существенную разницу между интерфейсами: IQueryable описывает коллекцию, которая еще не была инициализирована (не загружена из базы, если конкретно про этот пример примерять), IEnumerable - коллекцию, которую можно поперечислять себе на здоровье (более конкретно - что-то, что может тебе предоставить итератор, который может перечислять некий набор говна)
Посоветуйте уроков и/или литературы по ООП C#. Дело в том, что в глубокой молодости (школьником) я разбирался в этом ваше программировании, но дальше Паскаля дело не пошло. То есть про циклы, массивы и весь подобный примитив я в курсе, а вот про классы и методы что-то совсем в голову не лезет. Так что нужна информация хотя бы на школьном уровне для начала.
>>709127 >Но вообще гуглишь "ооп для начинающих" и почти любая ссылка - ответ на твой вопрос Это понятно, гуглить я умею. Вопрос в том, как не нарваться на говноуроки, чтобы потом одним говнокодером не стало больше. Вы же опытные ребята, умеете отличить нормальные занятия от фуфла, поэтому и спрашиваю. И да, мне б желательно все-таки в текстовом виде, а не ютуб.
Скажите честно, стоит в 2016 начинать изучать c# и .NET? Или Дотнет сейчас все меньше и меньше востребован кроме как в больших фирмах (друг два года назад фрилансил на ксамарине, а сейчас в реакт нейтив ушел, второй на асп.нет писал, сейчас мидл на роре)?
>>709217 не могу сказать, к сожалению. я уж давно не в деле. но могу с определенной уверенностью наванговать, что в мире мобайла предложений должно быть достаточно много
Ньюфаг в треде. Вот читаю книгу на английском, что-то гуглю что именно важное, но иногда бывает половину предложения не пойму или не запомню название чего-то. Скипать и читать дальше надеясь что с опытом все запомнится или взять книгу на русском где я пойму 100%?
Ужасно лагает VS 2015. При вводе текста задержка с пол секунды, а компиляция маленькой программы на 3 строчки происходит секунд 15. Обновления повыключал, при установке нажал "выборочно" и отключил все доп. модули. В чем может быть проблема? Ноут 2 ядра 2.4, 4 гб ОЗУ, не SSD. W7
>>709255 > Скипать и читать дальше надеясь что с опытом все запомнится This. Все так делают. Даже на русском ты не поймешь все 100% текста, такова особенность нашего мозга. Ты забудешь все через 2 недели, если не будешь практиковаться, независимо от языка, на котором книга была написана.
Аноны, подскажите новичку. Спрашивал тред-два назад что на джуниора надо. Прочитал, поизучал примеры. Напрашивается вопрос. Надо ходить по собеседованиям, чтоб сказали где я хуй квалифицирован, а где нет. И если что - взяли работать за еду. Залез офк первым делом на HH.ru . Но там вакансий по джуну вообще нету. Т.е. есть один по asp.net, но с опытом работы. Я же, ясен-красен опыта работы не имею, ну и asp не знаю.
Гугл выдает архивы вакансий. Подскажите, где искать? Мб сайты тематические конкретно по IT-вакансиям есть?
>>709424 это ж тебе надо написать, мол, не все так плохо, да? ну, если тебе все понятно и книга раскрывает нужные моменты C#/.NET, то ну куда деваться, учи. но Троелсена скачай на всякий случай пдфочку
>>709453 Знакомый говорит в его пхп-мирке сейчас неебическая конкуренция. Ну прямо толпы с разных двухмесячных курсов бегут и готовы работать бесплатно, без шуток.
>>709609 Я ньюфаг, не понял ничего. Если не сложно объясните чайнику. Вот я открыл кем-то написанный проект в вижуал студио, могу добавить кнопку, могу листбокс, а календарь не могу.
Почаны, кто что думает про Universal apps? Десятка сейчас на первом месте в стиме. Также планируется поддержка Xbox один. Конкуренция в Windows store небольшая. Можно хотя бы на хлеб заработать?
Устроился погромистом. По работе в основном буду заниматься C# + WPF. Чувствуется небольшой привкус говнеца между зубов, ну да ладно. Начал читать wfp 4 unleashed от Adam Nathan. После вводной части идет сразу ебучий XAML. Тащем-то у меня первое задание про простое приложение оконное без особого масштабирования функционала, я так понимаю мне пока не стоит ради этого углубляться и достаточно нашлепать формочек да кода написать? И поясните за XAML: каким боком он пригождается погромисту? Ну т.е. поверстать UI это конечно круто, но это больше к дизайнерам и прочим личностям. В нём удобнее и быстрее закодить окошечки, чем делать это из кода?
>>709733 > каким образом пригождается каким образом погромисту пригождается формошлепство? xaml - помимо как средство описания внешнего вида также и инструмент воплощения основной идеи wpf, т.е. уменьшение (отсутствие) кода в ui-элементах
Делаю задачи из Кернигана и Ричи на C#, попутно импровизируя графический интерфейс. Как лучше всего организовать отображение истории перевода Фаренгейт -> Цельсий и обратно (у меня двухсторонняя реализация через текстбоксы)?
Сап, шарпач. Читаю Троелсена, дошел до двадцатой главы (System.IO) и я так больше не могу. Перевод ужасный, много воды и лишней повторяющейся информации. Хочу дропнуть и перейти к другой книге, но к какой? К какой книге перейти? К какой?
Что можешь посоветовать годного по WPF? inb4 читай шапку
>>710026 Меня еще бесит его "более подробно можете почитать в документации .NET SDK". В общем, чтение этой книги - бесполезная трата времени. Жаль, что я осознал только сейчас.
>>710050 Я все понимаю. Эта книга дает лишь обзорное понимание устройства .NET и C#, но преподносит себя так, будто она рассматривает все тонкости и нюансы всего .NET.
Или так: можно ли как-то освободить неуправляемую память, зохаванную либой, если писатели либы не озаботились её освобождением ни в деструкторе, ни в диспозере? понятно, что от такой либы надо отказываться, но есть ли быстрый воркэраунд?
Есть собака. Собака может быть сенбернаром и дворнягой. Вне зависимости от породы может жрать: сырое мясо, сухой корм. Как лучше иерархию классов запилить? Пока так придумал:
Сделал себе с помощью Entity Framework sqlite базу данных. Подскажите, пожалуйста, как теперь сгенерить для неё ER diagram(диаграмма "сущность-связь")?
В следующем году нужно будет проходить практику в какой-то фирме. Где их лучше искать и что писать? Знаю winforms, wpf, немного asp.net mvc и t-sql. ДС2
>>710420 Ну, понимаешь, ты не просто пихаешь корм в собаку, а вызываешь метод «съесть корм». А забрать корм обратно нельзя, потому что свойство только для записи.
>>710802 Необходимость и смысл делегатов следует из их сути о возможности присвоения ссылки на метод объекту. Их можно использовать в различных ситуациях: в паттернах, основанных на event; когда нужно иметь несколько реализаций одного типа метода (некое подобие интерфейса); callback'и. В большинстве случаев можно обойтись без них.
>>710822 интерфейсы же нужны для прототипирования, там мы укажем свойства и методы и заставим программиста заполнять все это дерьмо в объекте, что наследуется от интерфейса. а делегат то только суть ссылка на функцию, максимум что он определяет - это тип, возвращаемый этой самой функции >>710827 >в паттернах, основанных на event; Можно пример для одаренных? >когда нужно иметь несколько реализаций одного типа метода Разве для этого не используется перегрузка?
>>710831 перегрузка переопределяет конкретный метод в данной иерархии классов, а тебе нужно много вариантов одного и того же метода. тут речь о стратегии
>>710831 >суть ссылка на функцию Ну ок, а интерфейс это просто ссылка на объект. Интерфейс гарантирует что объект будет иметь определенные методы, делегат - что у функции будут такие то параметры и возвращаемый тип, т.е. прототип, как ты и написал. Если бы в нашем языке были первоклассные функции, делегатов бы не было, были бы какие-нибудь функциональные интерфейсы.
>>710831 >Можно пример для одаренных? Ты в event добавляешь как раз делегаты. >Разве для этого не используется перегрузка? Как уже сказали, перегрузка для конкретного метода. И к тому же перегрузка ведь требует различные входные и/или выходные типы метода.
>>710844 те делегат это образно метод, у которого объявлен функционал, но не логика, и который можно перегружать другими методами (он копирует их логику при том условии, что функционал идентичен)
>>710846 Если уж совсем на пальцах (в терминах С++), то делегат это указатель на метод/ы, которые имеют соответствующую сигнатуру а ля bool saveString(string str). В С++ делегаты можно объявлять задавая тип функции с помощью typedef и потом так же использовать. Но гораздо проще с этим с помощью обертки std::function или аналогов от boost, например.
>>709364 В CoreCLR - никаких. Сам страдаю. Нет даже .NET Remoting, даже домены там выпилили. Только Web API или там NancyFX какой-нибудь. Под пайпами, видимо, они имеют в виду ручной пердолинг в System.IO.Pipes. Если CoreCLR взлетит, рано или поздно альтернатива появится, я думаю.
Поясните, создавать интерфейс чисто ради того, чтобы сделать мок - это норм? Допустим, у меня в контроллере есть свойство типа T. Когда я буду тестить методы контроллера, я хочу его замочить. И специально для этого я делаю интерфейс IT, хотя ни для чего кроме тестов интерфейс мне абсолютно точно не нужен.
>>711393 Mock-объект представляет собой конкретную фиктивную реализацию интерфейса, предназначенную исключительно для тестирования взаимодействия и относительно которого высказывается утверждение
>>711468 когда будешь проходить мимо какого-либо здания - следи чтобы сверху кирпич на голову не прилетел. не уследишь - значит я швырнул прямо в цель.
>>711471 Давай лучше я расскажу тебе о том, как ты родился: когда я насиловал твою беременную мамашу и потом тряс её за руки с балкона, она визжала и начала говорить что щас обосрётся. Мне было похуй, и таким образом ты упал с третьего этажа при рождении. Не обижайся на меня сильно за это, дефектное.
Программач, Изучаю С# по The C# Player's Guide. Дошел до наследования классов, и немного завис. Например: http://pastebin.com/erReQ3Jc
Как расшифровать последнюю строку вообще? Какого класса объект создается? ЗАЧЕМ это, ведь, как автор пишет, у такого объекта будут доступны только поля из класса А. На professorweb искал, не могу найти место где конкретно это объясняется. Как это гуглить тоже не врубаюсь. Спасибо
>>711628 это, на самом деле, довольно важный момент. однако адекватно на примере показать а зачем тяжело. тоже самое, в принципе, с referenced/value types
>>711627 В примере просто показали что в переменные базового типа можно записывать объекты дочерних классов, внезапно кто-то на анонимном формуе начинает рассказывать про скрытый глубогий смысл, полиморфизм, паттерны какие то увидел которые к тому же слабо относятся к наследованию классов, потому что реализуются через композицию. В ообщем не горит у меня, не горит.
>>711739 >> просто показали что в переменные базового типа можно записывать объекты дочерних классов, ну и зачем это показали? Это, явно, недоделанный пример.
>>711743 Чтобы в следующих примерах люди не хватались за голову как это я создал объект B, а могу в A записать, вы говорили типизация. Тебе не понять еще раз, ты ведь это уже понял.
>>711746 Человек не понял текущий пример, и не хочет двигаться далее пока не допрет. Попросил ключевые слова для гугления, ему их дали. В чем проблема?
>>711540 >ЗАЧЕМ Прост) Вот представь, что есть еще класс C : A , и ты прямо на месте по какому-то признаку хочешь выбрать что создавать - B мли C , а для последующей работы хватит функциональности базового класса А, но внезапно с потенциальной модификацией поведения B или С.
>>711836 Ага. Еще забавно, что имеется под работает быстрее? Компилирует проект на 10к строк кода быстрее или что? Интерфейс не тупит? Так у меня и студия летает с 40 открытыми вкладками в браузере. Может у тебя говнопека?
Шарпаны, под моно кто-нибудь web api пишет? Я тут начал, и охуел: оно не может распарсить json из тела запроса, потому что метод забыли дописать. Его конечно потом дописали, но это еще в альфа релизе. И это 2016 году.
>>712100 > An unlimited number of users within an organization can use Visual Studio Community for the following scenarios: in a classroom learning environment, for academic research, or for contributing to open source projects.
> For all other usage scenarios: > In non-enterprise organizations, up to five users can use Visual Studio Community. In enterprise organizations (meaning those with >250 PCs or >$1 Million US Dollars in annual revenue), no use is permitted beyond the open source, academic research, and classroom learning environment scenarios described above.
>>712472 Напиши такой код, а потом попробуй через рефакторинг изменить Temp на Temp2 ты увидишь что тип в справа в присвоение не изменился и возникла ошибка компиляции. Еще там есть куча мелких багов в виде "неправильное место подсветки ошибок" из-за того что сама IDE не понимает 6.0
Но с этим на OSX еще можно жить, на винде когда я проверял (месяца 4 назад) это вообще не компилировалось. Все надежна на Rider для DNX проектов, а для мобилок видимо так и придется ебатся с этой недо-IDE.
P.S. Ладно я использую XS на маке из-за iOS, а ты ее себе на винду нахрен поставил, когда есть VS Community?
>>712951 Так, посмотрел на винде: 1) В текущей стабильном билде код уже компилируется (если обновиться до последней версии 5.10.3), но рефакторинг тоже не работает. 2) В Alpha лежит версия 6.0 и там наверное рефакторинг работает, но никто не будет писать на альфе в продакшене.
И там очень туманные перспективы, если даже с сайта Xamarin все ссылки видут на VS Community или только SDK.
>>713049 Это ты менеджеру проекта будешь рассказывать. Она же с собой тащит и альфа версии компилятора и тулов. Даже сама студия спокойно может внести ошибки в проектные файлы или сломать их обратную совместимость. Никто тебе не дает гарантий, ты тут работает бесплатным тестером.
Шарпач, выручай. Почему-то деплой любого(даже Blank app) UWP приложения на C#/XAML фейлится с ошибкой: The required framework "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\.\AppX\Debug\x86\Microsoft.VCLibs.x86.Debug.14.00.appx" failed to install. error 0x80070490: Cannot process the 6bad89ce-4e61-452a-95f4-479e0b6925c6_1.0.0.0_x86_NorthAmerica_8wekyb3d8bbwe package because the following error was encountered while retrieving the 4 property for the value 'Images\XDesProc.Logo.png': Element not found.
Можете пояснить про MVVM (WPF) на простом примере?` Вот есть окошко с textbox, есть textblock, есть кнопочка. Юзер вводит текст в текстбокс, нажимает на кнопочку и в текстблоке показывается введенный текст. В типичном MVC это бы делалось так: есть эвент onClick, который берет текст из бокса и пихает в текстблок. Или я ошибаюсь? А в MVVM мы это можем запилить с помощью биндингов. Юзер вводит текст, этот текстбокс привязан к property класса, который отвечает за viewmodel, тем самым меняется этот property, к которому так же привязан textblock, который собственно и меняется. Правильно? А если все же нам нужно какое-то действие с кнопкой? Получается onClick меняет эту самую переменную, к которой биндинг? И еще, по поводу viewmodel класса. Он должен быть один, с которого и берется DataContext на весь xaml файл? Или как оно вообще в продакшене?
>>713274 > А если все же нам нужно какое-то действие с кнопкой? Получается onClick меняет эту самую переменную, к которой биндинг? мало что понятно из этого вопроса. аналогом OnClick в MVVM выступает команда и вообще - это паттерн. в ней ты реализуешь всю логику, что тебе необходимо
> И еще, по поводу viewmodel класса. Он должен быть один, с которого и берется DataContext на весь xaml файл? Или как оно вообще в продакшене? как правило, один на UI-объект класса Window или UiControl. но можешь отдельно на каждый текстбокс залепить свой вьюмодел. в зависимости от сложности, наверн
>>707882 (OP) Помогите решить очень простой вопрос. У меня есть парсер, написанный на winForms. он возвращает ссылки и сохраняет в текстовый документ. Но я хочу, чтобы он выводил их прям в приложении в виде ссылок по которым можно сразу же перейти. Мне для этого использовать richtextbox? Как это организовать?
я думаю, что дефолтное поведение от ListBox будет где-то таким же (т.е. надо будет писать хэндлеры на смену выбранного индекса). хотя, с другой стороны, можно воспользоваться LinkLabel в качестве элементов листа
>>713139 >это че значит? Есть квадратная таблица 10 на 10 которая отображает логическое состояние соответствующей битовой переменной цветом (черный - 1, белый - 0). Какой объект лучше всего подойдет для этой цели?
>>713571 А как тогда реализовать обход этих кавадратных контейнеров? Стоит заморачиваться с полотном (Канвас) где отрисовка будет зависеть от конкретного индекса элемента или все это тлен? Разве нету какого-то стандартного элемента, содержимое которого было бы двумерным массивом?
>>713587 Если ты пишешь на mvvm, то создаешь модель со своими квадратами и там же их обходишь/меняешь, на форме прост биндишь их в itemscontrol какой нибудь
При перегрузке Equals нужно еще перегружать == . Впрс : для классов они должны возвращать одинаковый результат или допускается разный?
У меня проблема в том, что для эквиалентности двух классов наступает при совпадении всего одного поля, а для равенства нужно проверять все поля. Я в сомнения правильно ли разное поведение двух этих операций?
>>713623 Спасибо, понел. Значит я правильно делаю, но это не очень хорошо, ибо я рано или поздно забуду в чем у них разница и наступлю на грабли. Придумал получше реализацию: нужно замутить внешний специальный компаратор на эквивалентность, а в самом классе оба способа проверки будут проверять полную идентичность + ссылки.
>>713627 если происходит merge коллекций, или List<T>.Contains(T), либо заполнение словарей, либо еще какая-нибудь срань, коллекции используют существующий функционал, а не твой компаратор
>>713665 А вот по веб сервисам мне сказали потренироваться сделать самое простое — получение курса валют. Это как копать, насколько сложно? Кстати, мможно из шарпа на двач поститть через эти технологии?
>>707882 (OP) Создал в XAML listview, прописал его имя и столбцы. Стараюсь добавить кодом в него данные, но безуспешно. foreach (var attr in drive.Value.Attributes) { if (attr.Value.HasData) { String s = (attr.Value.IsOK) ? "OK" : ""; smartListView.Items.Add( new { id = attr.Value.Attribute, current = attr.Value.Current, worst = attr.Value.Worst, threshold = attr.Value.Threshold, data = attr.Value.Data, status = s });
} } В дебаге смотрел, все переменные в attr заполненные данными, но вот ничего не пополняется.
>>713660 >Работать с xml Читай про сериализацию/десериализацию. С xml в wpf можно работать многими путями: чисто из xaml, чисто из code-behind, пихая в элементики строчечки, через ту самую десериализацию и биндинги. Я делал так: Xml десериализуется в классовую структуру, которая забиндина в xaml к listview, который отображает нужные элементы.
>>713681 Какого то хуя не только листвью данные не отображает, еще и простой Label текст не хочет отображать. Скорее всего я что-то не так делаю. Я все делал так. 1. В xaml добавляю елемент, прописываю ему поле Name, допустим labl. 2. В коде окна, в конструкторе пишу просто labl.Content = string; И вот нихуя.
Аноны, поясните за отмену нескольких совершённых раннее действий на примере трёх ситуаций: 1. Текстовый редактор. Под отменой действий подразумевается удаление последнего введённого имеющегося символа, отмена применённого форматирования, причём действия отменяются в обратном порядке поступления. Допустим, я ввёл слог жо", сделал шрифт жирным, доввёл слог "па", при отмене действий стирается побуквенно в обратном порядке слог "па", шрифт делается обычным, стирается слог "жо" аналогично "па". 2. Графический редактор, рисую то же слово за несколько "прикосновений" пера. При отмене операции в порядке, обратном появлению, стираются нарисованные линии. 3. Графический интерфейс произвольной программы. Допустим, нажал кнопку, которая делает какие то изменения, с программной точки зрения меняется булевая переменная или значение какой-нибудь интовой переменной.
Дак вот, меня интересует следующее: А) Без привязки к сисярпу, алгоритм отмены операций в вышеприведённых ситуациях одинаковый или разный? И какой он? Б) Собсно, самый важный для меня вопрос: как реализовывать отмену операций в вышеприведённых случаях уже на шарпе? просьба не гоните в гугол, хочу прочитать от местных анонов актуальные и/или проверенные советы
>>713805 > Допустим, нажал кнопку, которая делает какие то изменения, с программной точки зрения меняется булевая переменная или значение какой-нибудь интовой переменной это это действие надо отменить?
> Без привязки к сисярпу, алгоритм отмены операций в вышеприведённых ситуациях одинаковый или разный? И какой он? паттерн команда
> как реализовывать отмену операций в вышеприведённых случаях уже на шарпе? паттенр команда на шарпе
>>713810 шаблон "Команда" позволяет представлять операцию в приложении как объект и делает возможной её отмену
в любом из описанных тобой случае есть две составляющие: - какой-то объект - стейт и возможность его менять
следовательно, операции изменения, отмены и повтора, вписываются в алгоритм: 1 сгенерить команду 2 выполнить команду применимо к объекту 2.1 положить команду в какую-то стекообразную коллекцию 3 выбираем последнюю операцию 4 отменяем её 4.1 засовываем команду в стек последних отмененных (условно говоря) 5 берем последнюю отмененную операцию 6 накатываем её заново
>>713695 Пытаюсь показать картинку. Не удается. Вот таким кодом. BitmapImage img = new BitmapImage(); img.BeginInit(); img.UriSource = new Uri(path); ; img.EndInit(); this.IMAGE.Source = img;
path я получил, выбрав вручную в редакторе файл, и в строке показало путь. Приложение завершается, в дебаге выскакивает System.Windows.Markup.XamlParseException.
Вы заебали. Спрашивал в прошлый раз, ответили только петросяны. Как в 2016 году наиболее удобно использовать API нового dx12 без крестов и прочего ассемблера?
Анонасы, я ньюфаг, так что не обессудьте. Решил начать изучение этого богоподобного языка, с чего посоветуете начать? Для себя приметил две книжки: C# in a Nutshell и Head first C#. Первая вроде норм, вторая поговаривают как раз для зеленых. Что же выбрать или посоветуй свое?
ЕБТВАЮМАТЬ да как считать с цб эти ебанные котировки валют сука? Как, я не пойму? вот там есть метод чтобы как хмл получать. А писать его куда, как блять, нахуй, потоки сука хмл перебор дерева, нихуя не понятно, ебал я в рот пойду выпилюсь
>>714055 В каком плане? В плане перфоманса немного уступают софту на неуправляемых языках, в плане функционала - превосходит. Для игр есть юнити, например, CE недавно завезли. Сам двиг не обязательно на шарпе должен быть написан.
>>714080 Смотри, я сделал. Оказывается, нужно создавать клиент. Или как-то так. Хуй пойми короче. Ебал я в рот. Знаний не хватает, мне нужно разобратьс с сетью и хмлом
CBR.ru.DailyInfo rublesClient = new CBR.ru.DailyInfo(); DateTime lastRUB = rublesClient.GetLatestDateTime();
var RubRateXml = rublesClient.GetCursOnDateXML(lastRUB); DataSet RUBrate = rublesClient.GetCursOnDate(lastRUB); string xml = RUBrate.GetXml(); richTextBox1.Text = xml;
>>714088 ну вот тебе осталось завершить это так: new XmlSerializer(typeof(Govno)).Deserialize() as Govno и ты получишь тру ООП версию котировок. делай с не дальше уже что хочешь
Есть первый класс, у которого два свойства: одно char, другое int. Есть второй класс, у которого 2 метода с одинаковым кодом, где работают с экземпляром первого класса, только он в одном случае проверяет int поле, а в другом char. Как-то это можно всё универсализировать и сократить до одного метода?
>>714070 Некоторый функционал бота интересует. >>714069 Ты немного не понял, о чём речь. Меня интересует не разработка двигла/игры на шарпе, а непосредственная работа с трафиком игры. Приём/отправка пакетов, использование адресов, указателей, стеков и всего такого.
Нормально ли использовать статический класс для конфига, если я к нему из разных участков кода обращаюсь? Нормально ли объявлять класс внутри другого класса, если больше нигде этот внутренний класс не используется?
>>714138 Не совсем понятно как ты собрался делать игру. Если с нуля, с с своим движком, то это прямая дорога в кресты. А на Unity с# для другого используется. И да, указатели в шарпе есть.
>>713967 При чём тут игроделы, на иксах отлично всякие графики делать, да и возможность распаралелить вычисления и обсчитать их на gpu это повседневная необходимость.
Нагружать CPU чем-то кроме сложной логики всё равно что по комару из плазменной пушки стрелять.
>>713635 Похуй на мнимую нормальность. Нужно чтобы работало здесь и сейчас, когда же понадобится мерж тогда и выясниться, что без бубна его не сделать. Короч YAGNI.
анусы, я когда то давно натыкался на статью, где объяснялся способ переименовывания файла таким способом, что вместо расширения файла ставились символы из имени файла, т.е. из файла gonnafuckyoutxt.exe получался gonnahackyouexe.txt, причём при запуске файла, расширение которого изменили особенным образом, запускался бы исполняемый файл, а не блокнот. помню, что для осуществления задуманного нужно было при переименовке файла использовать какие то спец символы, но щас забыл, но ОЧЕ нужно вспомнить. хелп плиииз
Нормально ли реализовывать отмену операции рисования по пикчербоксу путём хранения стека объектов bitmap'a с pictureBox.Image после каждой операции, а потом, по нажатию кнопки отмены операции заменять текущий рисунок пикчербокса на тот, что в вершине стека?
>>714776 битмап - довольно тяжелый, а к тому же disposable объект по-хорошему, тебе надо хранить инфо о рисовании элементов - цвет, тип кисти, координаты кривой и т.д. не будь йобой кроч
>>714776 Не, история слишком много памяти выжрет на больших холстах. Для отмены последней операции лучше бери чистый битмап и накладывай на него всю историю фигур - 1, когда начнет тормозить, тогда схороняй промежуточные целые битмапы каждую 20 операцию и накладывай последние опереации уже на них.
Ребята, где можно почитать/посмотреть про инкапсуляцию для дебилов вроде меня? Читаю Head First, посмотрел урок от ITVDN, но все равно не доходит. Особенно про свойства никак не могу себе в голову запихнуть знания.
>>715297 конструктор для создания объекта класса в памяти, выделяемой программе. вызывается new MyClassName();. Просто объявив переменную "MyClassName x;" ты создашь четырёхбайтовую и вроде восьмибайтовую в х64 системах ссылку на объект, но самого объекта не будет, и при попытке обращения к любому полю/свойству/методу ссылки, будешь ловить NullReferenceException. поля и свойства именовать необязательно, можешь вообще поля не использовать, а только автореализуемые свойства (типа public string stringProperty {get;set;}) и пользоваться ими как полями. крче свойства в основном используют для инкапсуляции полей, хотя я с высоты своего нулевого опыта никогда не встречался с острой необходимостью инкапсуляции именно полей (хз, в больших проектах наверно нужно). ну и именовать их можешь как хочешь, офкорс.
>>715152 инкапсуляция - сокрытие деталей реализации типа. т.е. вообще любой информации, которая может привести к лишнему представлению о типе в принципе
>>715334 Там одна форма штоле? Скопируй и переименуй. Зачем тебе две одинаковые формы, но в двух разных проектах? Пиши прям в этом, можно бранч сделать, лел.
Привет, я уже к вам обращался в посте >>713289. Парсер я написал, более менее нормально работает, но есть несколько проблем, которые нужно решить. Суть парсера такова: при нажатии кнопки старт он заходит на сайт объявлений и выводит в richtextbox`е все объявления за сегодня. Ссылок добавляется достаточно много и при добавлении приложение начинает тормозить и я не могу перемещать окно и нажимать на уже добавленные ссылки. Как этого избежать?
>>715456 я только начал читать про многопоточность и это мое первое приложение, буду очень благодарен за помощь. Мой метод парсинга сначала получает все ссылки с товарами на странице, потом для каждой ссылки в цикле foreach загружает ее html, достает нужную информацию и вызывает метод richtextbox.Text += "информация". Насколько я понимаю, вызывать richtextbox.Text в этом методе не правильно. Как мне его переписать?
Посоны, подкиньте стримов, где можно заценить, как работают профессионалы. Чтоб энтерпрайз, TDD, рефакторинги-хуякторинги, с нормальной архитектурой у приложения. Ну вы поняли. Посмотрел на livecoding.tv - сплошные васяны кодят игори на юнити.
Сап шарпотред, реквестирую легкую идею (не обязательно оригинальную) для быстрого написания курсача по с#+winforms+linq. Мне только всякий омск в голову лезет.
>>707882 (OP) Помогите с вопросом. Как на винформс сделать так, чтобы приложение было всегда на переднем плане, т.е при переходе на другие приложение она не уходила "под них".
Помогите студентику, пожалуйста. Есть двумерный массив, заполненный нулями, единицами и двойками. Нужно написать функцию, которая будет рандомно менять один ноль на двойку. Как это сделать? Полтора часа уже с циклами ебусь, результата никакого.
>>716531 Подсчитываешь количество нулей в массиве - пусть будет N. Дальше по очереди идешь по массиву (без разницы как, но нужно только по одному пройти по каждому элементу) и ещешь нули. Как только нашел роляешь рандомное число в промежутке [0,N) - тоесть 0 может выпасть, N не может. Если выпал 0 то меняешь ноль на двойку и все. Если не ноль, то уменьшаешь N на единицу и смотришь дольше (N всегда равен оставшемуся количеству непросмотреных единиц). Так повторяешь пока не выролишь ноль. Это если тебе обязательно нужно равномерное распределение.
Поясните ньюфагу пожалуйста. Ковыряюсь в юнити, пытаюсь научиться в сохранение\загрузку в xml. Сохранять сохраняет, а вот с загрузкой проблема, ругается при попытке загрузки "FormatException: Input string was not in the correct format". Значение переменной беру из другого скрипта.
using UnityEngine; using System.Collections; using System.IO; using System.Xml; public class SaveLoad : MonoBehaviour {
public int Gold;
public void Save () { XmlDocument xmlDoc = new XmlDocument(); XmlNode rootNode = xmlDoc.CreateElement("Scene1"); xmlDoc.AppendChild(rootNode);
Такой вопрос реально ли без профильного высшего образавания самостоятельно обучиться шарпу и пойти работать? Или нет - везде требует заебатых тонкостей и формальностей написания кода, которыми сам хер научишься?
>>717802 хуй знает. сам студент в средней такой мухосрани в лучшем вузе города (из трёх, кхм), нас почти ничему не учат, ебашишь всё сам. имхо в руссии в университетах нормальных преподаванов в сфере ИТ не встретишь, все работают за реальне бобло, и не тратят время на взращивание конкурентов. + как я понял, чистый шарп можешь себе в очко засунуть. т.к. шарп - это корпоративные приложения, точись под бд со всякими sql и прочим шлаком.
Ребята, только начинаю программировать, изучаю сейчас основные виды коллекций (arrayList, stack, очередь, и так далее). Вроде все понятно, но когда пытался написать свой класс типа intList до конца реализовать не смог. Где-нибудь можно посмотреть на простую реализацию всех этих интерфейсов?
Чтобы основные методы были реализованы хотя бы (Add, AddRange, SetRange, GetEnumerator, CopyTo) и все такое. Не серчайте, если что-то не так с терминами ;c
>>727073 >stack >очередь Это не одно и то же, не? А, у queue FIFO, а у stack'а LIFO, вспомнил.
Посмотри метаданные обобщенного списка (List<>), там методы и реализуемые интерфейсы вроде понятно описаны. Ну и гугл -> msdn, очевидно. Еще 9 глава Троелсена.
Здесь все мертвы, но все же спрошу: Что читать, чтобы понять, как работает explorer? В частности, мне нужно "перехватить" обработку даблклика по папке на рабочем столе.
Сап. Есть "проект" собственноструктурного (ручками узлы и ребра делаются) графа, узлы которого рисуются на битмапе полигоном. Как можно с помощью mousemove определять принадлежность отрисованного полигона тому или иному узлу? Пока смог научить только сраные прямоугольники и эллипсы отличать.
Котаны, раньше учил яваскрипт, перекатился на юнити и обосарлся на создании простой минимапы. Есть годные сайты для изучения? Английский знаю так себе, желательно на русском.
>>707882 (OP) Привет, анон. Помоги с кусочком кода. Есть текстовый файл, наполненный обычным текстом, слова разделены пробелами, некоторые абзацами. Нужно каждые n (пусть 50) слов забить в string массив до конца файла.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Литература вторым постом
Breaking news
- Xamarin стал бесплатным для небольших команд
- Вышла первая preview-версия новой Visual Studio - https://www.visualstudio.com/en-us/downloads/visual-studio-next-downloads-vs
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/694892.html