C# Готовые Примеры Программ

Вот реальный пример. C# придумали. Давайте запроектируем небольшую программу. Visual C# для чайников. Напишем простейшую программу на C#. В этом цикле уроков я.

По крайней мере, прекратились статьи «как заработать гугильён бубильёнов за полчаса», «какие таблетки пить, чтобы стать умнее Ландау» и «как завоёвывать друзей и оказывать влияние на людей». Воды и копи-паст туториалов и не надо.

Хотелось бы заметок, как лучше изучать ту или иную технологию, какие качественные статьи и книги стоит посмотреть и т. Потому как заходишь в магазин, смотришь на полки с компьютерной литературой и обомлеваешь от разнообразия. Но ведь точно знаешь, что большая часть пособий — не лучший выбор. А вот, что купить, что посмотреть? Вот и хочется услышать мнение профессионалов/опытных в этой сфере людей. Хорошо спланированная PR кампания — это когда восторженные ДЕВЕЛОПЕРЫ пишут обо всем самостоятельно. Хотя, разумеется, без заказных статей тут дело не обошлось.

Весь девелоперский инет кишит такими восторженными текстами. У меня предложение Микрософту: давайте сделаем еще одну прослойку, теперь между.NET и программой.

Назовем это типа.DA, чтобы ползьователь не мог запустить свою «Hello World» без скачивания полутора гигабайт ненужного и закрытого кода. И никаких линкеров! Пусть все юзеры скачивают и ставят себе.DA (сперва установив, разумеется,.NET)! А то понимаешь не даром же маркетологи работали над столь гениальной идеей столько лет.

Все для ДЕВЕЛОПЕРА. Жду следующих статей. А к этой у меня два мелких замечания.

Первое — в примере не хватает общего пространства имен, в которое он заключен. Нужно было уточнить, что метод WriteLine — статический, т. Это метод класса, а экземпляр этого класса не создается, так как там все методы такие. Ну и про CLR можно было по-подробнее, что она очень дотошно «вычитывает» код на предмет наличия ошибок безопасности типов и таким образом можно многие ошибки обнаружить еще до компиляции, а не на этапе выполнения. Checked Exceptions в C# не поддерживаются. А это значит, что в любой момент приложение может рухнуть, если попытается неправильно использовать сторонний библиотечный класс.

И вы это узнаете только на этапе выполнения приложения! Checked Exceptions нужны на этапе статичекого связывания компилятором исходного кода. Вызовы, которые потенциально могут бросить исключение, отслеживаются компилятором. Программист может вовремя заметить необработанную ошибку и написать обработчик. Но в C# такого нет — приходится полагаться на другие технологии отслеживания ошибок. Извените, что заставил вас это написать, на самом деле я вспомнил пример из-за которого я возмутился при работе с Java и, кажется, он говорит о корявости Checked Exception вне зависимости от интерпретации Checked Exceptions. Два или три года назад я писал транстлятор языка Java и для преобразования Java исходник - AST использовал библиотеки eclipse.

Мне понадобилось кастомизировать их поведение и я унаследовал класс библиотеки и переопределил в нем пару методов. Проблема в том, что в теле новых методов я что-то использовал, что могло кинуть Checked Exception, кинуть это исключение дальше, что бы я мог обработать его в своей программе я не мог, так как мне не позволяла сигнатура метода, который я переопределил. Обработать его на месте тоже не мог (представте, что все исключения IO будут обрабатываться внутри стандартной библиотеки), что бы решить эту проблему мне пришлось заводить глобальную переменную (сингелтон) и писать туда, что за исплючение произошло и после вызова метода eclipse проверять эту переменную. Это верно, только в первом решении, мы заменяем глобальную переменную (singelton) на локальную — состояние объекта класса. Второе решение не работало в моем случае, так как метод в который я передавал свой объект кидал не те же самые исключения, которые кидал переопределенный метод, а как то их обрабатывал внутри и кидал уже другой-свой exception.

По мне так, отстутствие Checked Exceptions в C# это благо. Потому что в описанной ситуации Checked Exceptions не помечали вычисления меткой, что они «грязные», а способствовали тому, что кривой дизайн библиотеки передавался на дизайн моего кода, делая его тоже плохим:). К сожалению, эта информация теряется, если сторонний разработчик предоставляет только бинарный код в составе какого-то своего приложения и не намерен делится документацией по использованию этого бинарного кода.

Примеры

Java-компилятор, как вы правильно заметили, анализирует сигнатуру метода на этапе компиляции. И, обнаружив в нём неперехваченные в вызывающем коде проверяемые исключения, указывает на ошибку компиляции.

Для C# в аналогичном случае придётся писать Test Case, чтобы проверить все методы вызываемого бинарного кода на наличие бросаемых (unchecked) исключений. На это тратиться просто больше усилий, чем в Java. В том-то и дело, что Ruby и Python сильно отличаются от Pascal и Basic. И не динамической типизацией, а именно подходом.

Вот потому то, имхо, и не стоит их использовать для основ программирования и алгоритмизации. Разве что в C-style виде, без использования отличного от других подхода, то есть просто как процедурные языки с элементами ООП, таким-то синтаксисом ветвления, таким-то цикла, таким-то определения класса и т. Но, во-первых, в таком случае у них не будет преимуществ (для этого годится любой «Си-подобный» язык, например, PHP;) ) во-вторых за использование руби (и, вероятно, питона) в таком стиле автора просто заминусуют:).

Может быть просто декларативный подход не востребован массовым рынком? Может быть десятки тысяч «функциональных программистов» в год (по России, наверное:) ), специализирующихся на параллельных вычислениях средствами Smalltalk просто не найдут себе работу? Я не спорю, что такой курс(ы) должен быть обязательным при получении диплома программиста, но далеко не основным, имхо, на настоящем этапе развития рынка ИТ. Массовое образование ориентировано прежде всего на нужды экономики (не важно рыночной или плановой), нравится нам это или нет. Вы путаете немного Паскаль и Си =) в паскале for i:=0 to n do трудно допустить ошибку, в отличие от синтаксиса си: for i=1,n) (явно написал неверно, ибо си не знаю — на уровне понимания). А понятие цикла так вообще легко объяснить на Бейсике — For Next — чего уж проще. А в вашем примере уже используются «пережитки» классов =) count.times — объект.свойство.

Насчет же «англоязычности» — тут все языки практически одинаковы. Изучив например оператор writeln в Паскале, новичок легко поймет, например и шарп-ское Console.WriteLine. Я не спорю, возможно ваш постулат об обучении на базе Питона имеет под собой основания. Но пока я не встречал курсов основ программирования именно на этих языках. А преподавание основ на Бейсике и Паскале — закреплено временем.

Я сам начал с Бейсика и Паскаля, и впоследствии легко освоил и VB, и VBA, и даже такую редкую вещь как Lotus Script. Аналогично, переход от Pascal к Delphi вообще произошел незаметно. Изучив Питон и Руби перейти к Си, будет сложнее, не говоря уже о Ява и проч. А вот, изучив Си, обратный переход к РНР, Питону, Яве и т.д. С-based языкам очень и очень просто пойдет.

Знаете, я никак не пойму зачем же нужны эти циклы статей. Сначала капли про Руби, теперь ведра C#, скоро, вероятно, будут прудики с жабами Точнее, так. Я в чем-то понимаю авторов — интересно писать; в процессе начинаешь лучше понимать то, о чем, пишешь; самооценка, в конце концов, растет. Но читатели вы почему так рады этим циклам? Неужели вы рассчитываете, что люди, сами недавно освоившие эту область, могут последовательно и безошибочно все изложить?

Суметь расставить акценты, дать хорошие примеры? Вместо этого, если вы действительно хотите выучить язык, то почему не взять за основу хорошую книгу, написанную человеком, стопроцентно разбирающимся в теме? Многие из таких книг переведены на русский (пусть и не лучшим образом), так что даже плохое владение английским не должно остановить. Кстати, если говорить про C#, то советую читать Трэя Неша и не советую Либерти.

C# Готовые Примеры Программ Windows Forms

Уверен, автор сам эти книги уже освоил, и думаю, будет активно пользоваться ими при написании своего цикла статей, что, безусловно, положительный момент. Но у меня тогда вопрос — почему не обратиться сразу к первоисточнику? Какова ценность этого пережевывания Прошу автора не воспринимать комментарий как личную критику. Это всего лишь мое мнение о такого рода циклах в целом. Просто так получилось, что сегодня мне очень захотелось высказаться на этот счет. Сейчас как раз все мои силы идут на то, что бы найти оптимальный и интересный метод обучения в интернете. Ищу инструментарий.

C# готовые примеры программ windows forms

Jбучение кого? Насколько я знаю инструментарий сильно различается при обучении «всего интернета» или при обучение конкретной группы (по предварительной записи, возможно с предварительным тестированием и т.

При первой ЦА упор делается, обычно, на «дидактические материалы» (вроде так это называется у профессионалов:) ), в общем статьи-лекции, возможно скрин/подкасты, задания для самостоятельной работы, «анкетное» тестирование и т. Характерная особенность — мало обратной связи, особенно для человека не следящего за публикацией материалов в «реал-тайм».

Самый известный пример, наверное, При второй ЦА обучение, напротив, строится на тесной обратной связи, вплоть до полного отсутствия теоретической (вернее «лекционной») и «домашней» частей — «делай как я и задавай вопросы, если что-то непонятно», «теперь делай то-то, что значит не знаешь, а почему 5 минут назад не переспросил». Кто-то использует групповое обучение, кто-то парное, кто-то индивидуальное, главное тесная обратная связь студента и преподавателя. Технологии самые разные, от систем видеоконференций до «примитивной» IRC или даже аськи. Мне кажется, что книга не всегда может быть оптимальным средством для обучения, порой цикл статей со ссылками на сайт с документацией вполне может заменить книгу, даже очень хорошую. Советую почитать одну статью — там описано, как хорошо научиться языку программирования. Мне лично, запомнилась такая цитата: ' читать литературу стоит лишь тогда, когда есть вопросы, на которые она даст ответ. Если читать книгу, не имея к ней вопросов, то информация выветрится через неделю.

Думаю, это не только к учебникам относится:). По-моему таки статьи куда лучше подходят в качестве толчка. Сложный пример, с использованием всех возможностей языка, мощных библиотек классов, фреймвоков и т. Чаще провоцируют, по-моему, мысли вида «круто, надо бы разобраться в этом, но разбираться, наверное, год, так что как-нибудь потом», чем «круто, надо разобраться в этом, где бы книгу надыбать» Плюс очень многие книги (не все) часто подразумевают какие-то базовые концепции, которыми далеко не факт, что владеешь (самый частый пример лично для меня — консоль.nix и стандартное дерево ФС в этих же никсах, или регэкспы), или их авторы уделяют недостаточно внимание «разрыву рекурсии» частой в современном мире, когда одно понятие сложно или невозможно объяснить без второго, а второе без первого. Да и ниже цитировали «Если читать книгу, не имея к ней вопросов, то информация выветрится через неделю.» с чем я полностью согласен. Вот я сейчас начал читать книгу по Ruby, толчком послужили соседние «капли» Ну и не маловажный фактор — обратная связь, что не понятно тут же переспросил, может автор ответит, может еще кто.

А когда вопросы возникают в процессе чтения книги, то: — не знаешь где и у кого собственно спрашивать (особенно если книг на английском, а ты владеешь им достаточно чтобы «читать техническую документацию со словарем», но недостаточно чтобы сказать что-то сложнее «май нэйм из.») — если даже нашел форум, гуглгруппу и т.п. То даже на корректно сформулированный вопрос можно получить ответ «RTFM» или «юзай поиск», а учитывая, что часто в таких комьюнити общение идет на сленге, которого вы не знаете, то шансы что-либо найти минимальны (мне, например, не приходило в голову вбивать в поиск «юзать вьюшку», а по «использовать отображение» ничего не мог найти — возможность корректировать содержание статей по ходу изложения, тоже немаловажна, автор видит, что много вопросов по какой-то вскользь освещенной им теме (не самый хороший, но пример — регэкспы) и посвящает часть или всю следующую статью этой теме.

Это старая история идущая со времен С и первых С:) Нет на самом деле все просто, во времена MS-DOS возвращенное из main значение обрабатывалось осью и на его значении основывалось что произошло, в простейшем случае 0 — приложение завершилось корректно,!0 — приложение завершилось аварийно. А еще можно было вроде как в.bat файлах это значение отлавливать и на его основе разные штуки писать, типа ветвления и последовательности запуска других команд. Вот, как то так.

Кстати как сейчас с этим не знаю, но по-моему ничего не изменилось и ось также может получить возвращенное значение, дело только в том что зачем это сейчас надо? Во всяком случае в Win-системах. Если копнуть еще глубже, то история старее MS DOS:) Как минимум традиция это пошла от первых компиляторов Си и первых Юниксов (что было раньше яйцо или курица я затрудняюсь ответить без гугления:) ) и до сих пор в них успешно используется, да и в Win-системах никто не отменял анализ возвращаемого значения в тех-же «батниках»(«кээмдешниках»), а с недавних пор и PowerShell. Да и вообще, программа для Windows тождественно не равна программе с GUI, возьмите любой системный сервис — это все CLI приложения, как раз и возвращающие эти значения. Именно по ним ядро винды судит успешно запустился тот или иной сервис.

Не переживайте, скоро и под Linux будут эту проприетарную бадью втюхивать. Хотя, если отвечать непосредственно на вопрос (я, понимая вашу иронию, пишу, скорее, остальной публике), то ответ будет очень простым. Просто под.NIX системы этот аппендикс ненужен. Он там как мертвому припарка. Там и так все просто. А ведь есть еще вовсю набирающая обороты Inferno, где и сетевые ресурсы все представлены в виде файлововой системы. Интересно, куда денется Микрософт со своей непомерно раздутой и завзнич закрытой Windows лет через пяток:).

Только на Девелоперах и держется. Товарищи у меня вопрос! Прежде чем узнать вопрос следует знать цель моего вопроса (говорю это для неадекватных людей): лично для себя хочу узнать мнение людей, которые собираются программить на C# Итак: Почему вы выбрали С#, если — работает только под Win — требует намного больше затрат (покупка лицензий на Win) — тот же LAMP бесплатный (ну почти бесплатный) — все таки С# не такой уж и производительный ЯП (ВНИМАНИЕ: если вы так не считаете, не обращайте внимания.

Скажем ХолиВару НЕТ!) Буду рад услышать объективную точку зрения. Неверно говорить, что C# только под Windows.

Гта

Mono — довольно хороший проект и активно используется в Linux. По поводу производительности. Сейчас скорость Java C# считается более, чем приемлемой — просмотрите на Python/Ruby:). Сравнивать LAMP и C# нельзя — это разные вещи. Формально, вопросы о кроссплатформенности, цене и сравнение с LAMP имеет отношение только к ASP.Net. Лично я не любитель C# (я использую Java, которая практически тоже самое), но по мне Java/C# хороший способ написать ресурсоёмкий код в 2 раза быстрее, чем на C C, потеряв всего 10% производительности.

C# Готовые Примеры Программы

Лично я считаю, что Java прекрасно подходит для ресурсоёмких вставок в JRuby и Jython коде:). Мне не нравятся другие платформы, хотя Mono и существуют для любителей альтернативы.

Затраты один раз, и то не факт, win шла вместе с ноутом, среды для разработки на этапе обучения есть бесплатные, а потом не грех и заплатить за инструмент с помощью которого ты зарабатываешь деньги. Desktop приложения на PHP? Я вас правильно понял?:). Действительно не такой, хотя смотря с чем сравнивать, но на текущем этапе (стоимость железа и стоимость работы программиста), затраты на проиводительность, вполне окупаются скоростью разработки. Ни кто не отрицает их существование:).

Просто посмотрим на пример PHP-GTK, стандартный Hello World:и сравним с тем же самым решением на C#. После этого можно представить танцы с бубном при написании чего либо более сложного. В конечном счете все упирается в три постулата разработки: 1. Качественно 3. Недорого При разработке можно выбрать только два параметра, и подобрать нужный инструмент.

На текущий момент меня целиком устраивает в качестве инструмента C#. Какой-нибудь анализатор выдачи (например проверка позиций своего сайта и конкурентов) гугла (а может списка поисковиков) с накоплением результатов в БД и экспортом/импортом в файл? Вроде все основные технологии будут задеты — тут и работа (многопоточная) с удаленными серверами, сокетами и т. П., и работа с БД, и с файлом, и разбор HTML/XML, ну и, естественно, GUI, возможно с элементами HTML рендеринга (да и консольные какие-нибудь команды можно придумать, типа пакетных заданий) Правда, наверное, это тоже статей на 40 потянет наверное:). Вы знаете, статья очень сильно логически не закончена. Вы даёте введение в.Net но делаете это по принципу AS IS, не объясняя что/зачем/почему. Как например вот здесь: Одной из основных идей.NET является совместимость различных служб, написанных на разных языках.

Например, служба, написанная на C для.NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic.NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Всё совместимо, и всё может вызывать(ся), но вы не ступили ещё ниже и не упомянули про IL. Притом есть в тексте логические неточности, всё вроде бы правильно, но ухо немного режет.

Вобщем статья не сильно, посему '-' за неё, но начинание хорошее, поэтому в карму '+';).

В продолжение темы, где уважаемый @Alex Krass пытался мне объяснить, какая польза от применения интерфейса. Для меня все так же остается загадкой. Я все так же считаю, что это лишняя писанина кода. За это время я почитал немало статей про интерфейс и просмотрел видеокурс.

Но так и не разобрался. Честно сказать, я не знаю, почему я зациклился на нем, ведь не знал бы о его существовании, давно бы закончил писать свой проект. Вот, к примеру, Алекс объясняет, что в его примере он с легкостью может добавить еще 100 классов useConnect, но, на мой взгляд, ему также нужно 100 раз вызывать connect = new UseConnect(ссылка на класс);, причем в его конкретном случае ему придется плодить switch, чтобы вызвать все классы. Причем я так и не понял, как в таком случае можно добраться до метода из какого-либо класса, в том примере их можно вызвать только все кучей. Причем если в главном классе мне нужно будет еще раз использовать какой-нибудь метод, то мне опять придется переписывать connect = new UseConnect(ссылка на класс). В моем же случае, где я просто пишу ссылку на класс и через переменную вызываю метод, так я эту переменную могу использовать где захочу и когда захочу, причем могу вызвать любой из методов. Да и вообще мне не придется писать класс UseConnect, я могу вызывать методы сразу, в данном примере из класса MySQL, к примеру.

Вот реальный пример, который мне нужно реализовать в своем примере. Опять же повторюсь, с помощью ссылки на классы я уже эту задачу решал. Просто хочу посмотреть, как решают такую задачу профи, с помощью интерфейсов. У меня есть форма, в которой пользователь может сохранять записи в базе данных.

В моем случае MySQL. Он может внести запись, после вызвать ее и сделать изменения. У меня есть пять классов. Главный, который вызывает форму, класс инсерт, класс упдата, класс селест и класс подключения к базе. Класс инсерт упдата и селект наследуют класс подключения к базе. Ну это я так решил сделать, чтобы не использовать интерфейс.

Вот и сама задача: как мне эти четыре класса с помощью интефейса(ов) подключить к главному классу с формой. Ну, я это так для моего примера взял. Лучше, конечно, приведите, явный пример, где интерфейс облегчает жизнь программисту. Прошу не заводить тему моей грамотности и знания русского языка. Эту тему мы уже обсуждали и я не раз говорил о причине моей безграмотности русского языка.

C# Готовые Пример Программы

И так же не посылайте меня за книжкой, ну если только посоветуете хорошую. Интерфейс, в первую очередь интересен для межклассового взаимодействия. Например, если далеко не ходить, есть стандартный интерфейс (ISortable) И есть стандартный класс который сортирует объекты ISortable (не помню уже какой).

Без интерфейсов, Вы бы не могли использовать этот класс для сортировки своих коллекций, и, пришлось бы реализовывать свой метод сортировки. А так, Вы реализуете в своём классе только необходимые методы, и пользуетесь всем спектром вспомогательных классов для операций над ними.

C# Готовые Пример Программирование

И это только вершина айсберга. – 8 фев '15 в 18:06.