Книжный каталог

C# на примерах

Перейти в магазин

Сравнить цены

Описание

Эта книга является превосходным учебным пособием для изучения языка программирования C# на примерах. Изложение ведется последовательно: от развертывания .NET и написания первой программы, до многопоточного программирования, создания клиент-серверных приложений и разработки программ для мобильных устройств. По ходу даются все необходимые пояснения и комментарии. Второе издание было существенно дополнено, добавлена глава по работе с базами данных. Книга написана простым и доступным языком. Лучший выбор для результативного изучения C#. Начните сразу писать программы на C#! 2-е издание.

Сравнить Цены

Предложения интернет-магазинов
Евдокимов П. C# на примерах Евдокимов П. C# на примерах 496 р. chitai-gorod.ru В магазин >>
Евдокимов П.В. C# на примерах Евдокимов П.В. C# на примерах 461 р. chitai-gorod.ru В магазин >>
Евдокимов П. C# на примерах Евдокимов П. C# на примерах 508 р. chitai-gorod.ru В магазин >>
Эндрю Кёниг, Барбара Му Эффективное программирование на C++. Практическое программирование на примерах Эндрю Кёниг, Барбара Му Эффективное программирование на C++. Практическое программирование на примерах 881 р. ozon.ru В магазин >>
Максим Динман C++. Освой на примерах Максим Динман C++. Освой на примерах 119 р. litres.ru В магазин >>
П. В. Евдокимов C# на примерах П. В. Евдокимов C# на примерах 499 р. ozon.ru В магазин >>
Культин Н. MS Visual C# в задачах и примерах Культин Н. MS Visual C# в задачах и примерах 346 р. chitai-gorod.ru В магазин >>

Статьи, обзоры книги, новости

Microsoft Visual C# в задачах и примерах, ForCoder

ForCoder

Навазние: Microsoft Visual C# в задачах и примерах

Автор: Н. Культин

Описание книги Microsoft Visual C# в задачах и примерах:

Книга представляет собой сборник программ и задач для самостоятельного решения. Примеры различной степени сложности — от простейших до приложений работы с графикой и базами данных, том числе Microsoft Access и Microsoft SQL Server Compact Edition — демонстрируют назначение базовых компонентов, раскрывают тонкости разработки приложений Windows Forms в Microsoft Visual С#.

Уделено внимание использованию технологии LINQ. Справочник, входящий в книгу, содержит описание базовых компонентов, событий, исключений и наиболее часто используемых функций. Для начинающих программистов.

Содержание книги «Microsoft Visual C# в задачах и примерах»:

ЧАСТЬ 1. Примеры и задачи

• SQL Server Compact Edition

• Игры и другие полезные программы

• Поиск в массиве

• Поиск в массиве-2

• Обработка массива записей

• Работа с XML-документами

ЧАСТЬ 2. Краткий справочник

• Компоненты (Button, ComboBox,ImageList, CheckBox и т.д)

• Символьный и строковый типы

• Функции манипулирования строками

• Функции манипулирования датами и временем

• Функции манипулирования каталогами и файлами

• Задачи для самостоятельного решения

28,116 просмотров всего, 0 просмотров сегодня

Источник:

forcoder.ru

C# на примерах

C# на примерах

public static bool TruOrFls (int i )

public static bool TruOrFls( int i)

public static bool IsNechet( int i)

Math .DivRem(i, 2, out result);

public static class SingletonForm

private static Dictionary < Type , Form > forms = new Dictionary < Type , Form >();

public static Form ShowInstance( Type t)

Form f = ( Form ) Activator .CreateInstance(t);

f.Disposed += new EventHandler (f_Disposed);

static void f_Disposed( object sender, EventArgs e)

public void btnsprTIP_Click(System. Object sender, System. EventArgs e)

SingletonForm .ShowInstance( typeof ( frmMyForm ));

public void MyDtg_DataError( object sender, DataGridViewDataErrorEventArgs anError)

int ColIndx = ( int )anError.ColumnIndex;

string ColHT = MyDtg.Columns[ColIndx].HeaderText;

public DataGridViewRow GetCurrentRowOb

this .txtHr.KeyPress += new KeyPressEventHandler ( this .ObrabKey);

public static string [] GetStr

public static IEnumerable < string > SortedList

IEnumerable < string > sort = GetStr.OrderBy(a => a.j);

class Num : IEnumerable

frmMain MyF = GlobalVar .MainForm;

public System.Collections. IEnumerator GetEnumerator()

yield return MyF.Panel1;

yield return MyF.Panel2;

yield return MyF.Panel3;

yield return MyF.panel6;

yield return MyF.GroupBox1;

yield return MyF.groupBox2;

yield return MyF.GroupBox3;

yield return MyF.TableLayoutPanel1;

yield return MyF.pictureBox1;

foreach ( Control cob in new Num ())

cob.Anchor = AnchorStyles .Right;

using ( SqlCommand cmd = new SqlCommand (strSQL, GlobalVar .conn))

static class clsConn

public static void CreateConn( string strmydir)

GlobalVar .conn = new SqlConnection (ConnectStringBuild);

public static bool TestConn

using ( SqlConnection testconn = new SqlConnection (ConnectStringBuild))

return (testconn.State == ConnectionState .Open);

public static string ConnectStringBuild

string s = "Data Source=" + My. Settings .Default.ServerName + @"\" + My. Settings .Default.SQLServerName + ";" ;

return @s += "Initial Catalog=" + My. Settings .Default.BaseName + ";Integrated Security=True" ;

sealed class mdlMain

public static void Main( string [] args)

Application .SetCompatibleTextRenderingDefault( false );

GlobalVar .MainForm = new frmMain ();

Application .Run( GlobalVar .MainForm);

catch ( ArgumentNullException ane)

MessageBox .Show(ane.Message, " Main-ArgumentNullException" );

catch ( FormatException fex)

MessageBox .Show(fex.Message, " Main-FormatException" );

catch ( NullReferenceException nre)

MessageBox .Show(nre.Message, " Main-NullReferenceException" );

catch ( InvalidCastException ice)

MessageBox .Show(ice.Message, " Main-InvalidCastException" );

catch ( Exception ex)

MessageBox .Show(ex.Message , " o Main" );

private static string [] GetStringArr

string [] ars = new string [] <

int RecCount1 = GetStringArr.Count();

string s = GetStringArr[j-1];

public static float CheckIt( object par)

return ( Convert .ToSingle( Convert .IsDBNull(par) ? 0 : par));

public void MyDtg_CellEndEdit( object sender, DataGridViewCellEventArgs e)

string ColName = MyDtg.Columns[e.ColumnIndex].Name;

foreach ( Control cob in this .panel 1 .Controls)

if (cob is Label )

string sSQL= "Update Itogi SET Area=@area where kod=" + (i + 1);

string sAll = s1+s2+s3;

string sAll = string .Concat(s1,s2,s3);

string strUpdate = "Update Customers SET Balance=@Balance Where CustID=" +ID + " and SocialID=" + SocID;

string strUpdate = "Update Customers SET Balance=@Balance Where CustID=" ;

string strSQLUpdate = string. Format( "<0> <1>and SocialID=<2>" , strUpdate, ID, SocID);

private static string [] GetStr

string [] ars = new string [] <

foreach ( string s in GetStr)

private static void Sub()

foreach ( string s in GetStr)

int i = Array .IndexOf(GetStr, s);

string [] ars = new string [6];

List < string > ars = new List < string >();

static void XYZ( int a, int b, int c, string d, string e)

public string d,e;

public ABC ( int _a, int _b, int _c, string _d, string _e)

a=_a; b=_b; c=_c; d=_d; e=_e;

static void XYZ( ABC mystru)

int j= int .Parse (MyVal.ToString());

bool bVal = int .TryParse(MyVal.ToString(), out j);

public void txt box1 _KeyPress( object sender, KeyPressEventArgs e)

ObrabKeyPress ( sender, e );

public void txt box 2_KeyPress( object sender, KeyPressEventArgs e)

ObrabKeyPress ( sender, e );

public void txt boxN _KeyPress( object sender, KeyPressEventArgs e)

ObrabKeyPress ( sender, e );

private TextBox [] RetTBox

foreach ( TextBox tb in RetTBox)

tb.KeyPress += new KeyPressEventHandler (ObrabKeyPress);

using ( SqlCommand SelCustoms = new SqlCommand (sSel, conn2))

if (!rReadCustomer.HasRows) return 0.0f;

int tip = rReadCustomer.GetInt32(0);

string sSQL = string .Format( "Select * From Customers where CustomerID=<0>" , CustID);

SqlCommand cmd = new SqlCommand (sSQL, conn2)

public static int GetGodSetting

return ( int .Parse)(My.Settings. Default .god);

int God = Utils .GetGodSetting;

public void Btn1_Click(System. Object sender, System. EventArgs e)

public void Btn 2 _Click(System. Object sender, System. EventArgs e)

public void BtnN_Click(System. Object sender, System. EventArgs e)

Btn1.Click += new EventHandler ( clsClickBtn .Btn1_Click);

Btn2.Click += new EventHandler ( clsClickBtn .Btn2_Click);

BtnN.Click += new EventHandler ( clsClickBtn .BtnN_Click);

public LinkLabel l;

public LinkLabelLinkClickedEventHandler h;

public struLL( LinkLabel _l, LinkLabelLinkClickedEventHandler _h)

private List < struLL > GetLLList

List < struLL > opList = new List < struLL >();

opList.Add( new struLL (lL _ A, clsLLblClick .MethodA));

opList.Add( new struLL (lL _ B, clsLLblClick .MethodB));

opList.Add( new struLL (lL _ Z, clsLLblClick .MethodZ));

foreach ( struLL ll in GetLLList)

foreach ( Button btn in panel 1 .Controls)

btn.Click += new EventHandler (btnClik);

public static int ReturnKodTown( string s)

Dictionary < int, string > DicTowns = new Dictionary < int, string >();

return DicTowns.First(a => a.Value == s).Key;

int kod = ReturnKodTown (gorod);

var myCMD = new SqlCommand (strInsSvod, GlobalVar.conn)

var pars = myCMD.Parameters;

private static SqlParameters [] GetMyPars

new SqlParameter ( "@par2" , myVal2)),

new SqlParameter ( "@parN" , myValN))

using ( var cmd = new SqlCommand (s, GlobalVar.conn))

var pc = cmd.Parameters;

List < string > MyList = new List < string >();

var MyList = new List < string >

Func < int , int , int > myFunc = (z, y) => <

return ( z <= y) ? 2 * z : 3 * z ;

var gruppa = myInt.Select(a => myFunc(a, 5)).ToArray();

textBox1.KeyPress += (o, e) => MyObrabKeyPress( o, e);

textBox1.KeyPress += (o, e) => MyObrabKeyPress( o, e);

textBox2.KeyPress += (o, e) => MyObrabKeyPress( o, e);

textBox3.KeyPress += (o, e) => MyObrabKeyPress( o, e);

Источник:

npk-kaluga.ru

Список литературы на тему - C#

Список литературы на тему "C#. Язык программирования Си Шарп" Список литературы

2. Албахари, Джозеф C# 3.0. Справочник / Джозеф Албахари , Бен Албахари. - М.: БХВ-Петербург, 2012. - 944 c.

3. Албахари, Джозеф C# 3.0. Справочник / Джозеф Албахари , Бен Албахари. - М.: БХВ-Петербург, 2013 . - 944 c.

4. Альфред, В. Ахо Компиляторы. Принципы, технологии и инструментарий / Альфред В. Ахо и др. - М.: Вильямс, 2015. - 266 c.

5. Бишоп, Дж. C# в кратком изложении / Дж. Бишоп, Н. Хорспул. - М.: Бином. Лаборатория знаний, 2013 . - 472 c.

6. Вагнер, Билл С# Эффективное программирование / Билл Вагнер. - М.: ЛОРИ, 2013. - 320 c.

7. Зиборов, В.В. Visual C# 2012 на примерах / В.В. Зиборов. - М.: БХВ-Петербург, 2013. - 480 c.

8. Зиборов, Виктор Visual C# 2010 на примерах / Виктор Зиборов. - М.: "БХВ-Петербург", 2011. - 432 c.

9. Ишкова, Э. А. Самоучитель С#. Начала программирования / Э.А. Ишкова. - М.: Наука и техника, 2013. - 496 c.

10. Касаткин, А. И. Профессиональное программирование на языке си. Управление ресурсами / А.И. Касаткин. - М.: Высшая школа, 2012 . - 432 c.

11. Лотка, Рокфорд C# и CSLA .NET Framework. Разработка бизнес-объектов / Рокфорд Лотка. - М.: Вильямс, 2010. - 816 c.

12. Мак-Дональд, Мэтью Silverlight 5 с примерами на C# для профессионалов / Мэтью Мак-Дональд. - М.: Вильямс, 2013. - 848 c.

13. Марченко, А. Л. Основы программирования на С# 2.0 / А.Л. Марченко. - М.: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2011 . - 552 c.

14. Подбельский, В. В. Язык С#. Базовый курс / В.В. Подбельский. - М.: Финансы и статистика, Инфра-М, 2011. - 384 c.

15. Прайс, Джейсон Visual C# 2.0. Полное руководство / Джейсон Прайс , Майк Гандэрлой. - М.: Век +, Корона-Век, Энтроп, 2010 . - 736 c.

16. Рихтер, Джеффри CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C# / Джеффри Рихтер. - М.: Питер, 2013. - 928 c.

17. Смоленцев, Н. К. MATLAB. Программирование на Visual С#, Borland JBuilder, VBA (+ CD-ROM) / Н.К. Смоленцев. - М.: ДМК Пресс, 2011. - 456 c.

18. Троелсен, Эндрю Язык программирования C# 5.0 и платформа .NET 4.5 / Эндрю Троелсен. - М.: Вильямс, 2015. - 486 c.

19. Троелсен, Эндрю Язык программирования С# 2008 и платформа .NET 3.5 / Эндрю Троелсен. - М.: Вильямс, 2010. - 370 c.

20. Фримен, Адам ASP.NET MVC 3 Framework с примерами на C# для профессионалов / Адам Фримен , Стивен Сандерсон. - М.: Вильямс, 2011. - 672 c.

Внимание: данные, отмеченные красным цветом, являются недостоверными!

Книги, использованные при создании данного списка литературы:

Источник:

spisok-literaturi.ru

РЕФЕРАТ С#

/ РЕФЕРАТ С# / РЕФЕРАТ С#

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Саратовский государственный технический университет»

Кафедра «Прикладные информационные технологии»

«Инструментальные средства информационных систем»

«Язык программирования С# »

Выполнил: студент с-з ИФСТ 012

Наймушин Андрей Игоревич

Бровко Александр Валерьевич

Общее описание языка

Сравнение C# с другими языками программирования

Пример программы на C#

Список использованных источников

Язык программирования С# был создан в конце 1990-х годов и стал частью общей .NET-стратегии Microsoft. Впервые он увидел свет в качестве ?-версии в середине 2000 года. Главным архитектором С# был Андерс Хейлсберг (Anders Hejlsberg) — один из ведущих специалистов в области языков программирования, получивший признание во всем мире. Достаточно сказать, что в 1980-х он был автором весьма успешного продукта Turbo Pascal, изящная реализация которого установила стандарт для всех будущих компиляторов. С# непосредственно связан с С, C++ и Java. И это не случайно. Эти три языка — самые популярные и самые любимые языки программирования в мире. Более того, почти все профессиональные программисты сегодня знают С и C++, и большинство знает Java. Поскольку С# построен на прочном, понятном фундаменте, то переход от этих "фундаментальных" языков к "надстройке" происходит без особых усилий со стороны программистов. Так как Андерс Хейлсберг не собирался изобретать свое "колесо", он сосредоточился на введении усовершенствований и новшеств.

"Дедушкой" С# является язык С. От С язык С# унаследовал синтаксис, многие ключевые слова и операторы. Кроме того, С# построен на улучшенной объектной модели, определенной в C++. Если вы знаете С или C++, то с С# вы сразу станете друзьями. С# и Java связаны между собой несколько сложнее. Как упоминалось выше, Java также является потомком С и C++. У него тоже общий с ними синтаксис и сходная объектная модель. Подобно Java C# предназначен для создания переносимого кода. Однако С# — не потомок Java. Скорее С# и Java можно считать двоюродными братьями, имеющими общих предков, но получившими от родителей разные наборы "генов".

Общее описание языка

Последнее время С и С++ являются наиболее используемыми языками для разработки коммерческих и бизнес приложений. Эти языки устраивают многих разработчиков, но в действительности не обеспечивают должной продуктивности разработки. К примеру, процесс написания приложения на С++ зачастую занимает значительно больше времени, чем разработка эквивалентного приложения, скажем, на Visual Basic. Сейчас существуют языки, увеличивающие продуктивность разработки за счет потери в гибкости, которая так привычна и необходима программистам на С/С++. Подобные решения являются весьма неудобными для разработчиков и зачастую предлагают значительно меньшие возможности. Эти языки также не ориентированы на взаимодействие с появляющимися сегодня системами и очень часто они не соответствуют существующей практике программирования для Web. Многие разработчики хотели бы использовать современный язык, который позволял бы писать, читать и сопровождать программы с простотой Visual Basic и в то же время давал мощь и гибкость C++, обеспечивал доступ ко всем функциональным возможностям системы, взаимодействовал бы с существующими программами и легко работал с возникающими Web стандартами.

Учитывая все подобные пожелания, Microsoft разработала новый язык - C#. В него входит много полезных особенностей - простота, объектная ориентированность, типовая защищенность, "сборка мусора", поддержка совместимости версий и многое другое. Данные возможности позволяют быстро и легко разрабатывать приложения, особенно COM+ приложения и Web сервисы. При создании C#, его авторы учитывали достижения многих других языков программирования: C++, C, Java, SmallTalk, Delphi, Visual Basic и т.д. Надо заметить что по причине того, что C# разрабатывался с чистого листа, у его авторов была возможность (которой они явно воспользовались), оставить в прошлом все неудобные и неприятные особенности (существующие, как правило, для обратной совместимости), любого из предшествующих ему языков. В результате получился действительно простой, удобный и современный язык, по мощности не уступающий С++, но существенно повышающий продуктивность разработок.

Очень часто можно проследить такую связь - чем более язык защищен и устойчив к ошибкам, тем меньше производительность программ, написанных на нем. К примеру рассмотрим две крайности - очевидно это Assembler и Java. В первом случае вы можете добиться фантастической быстроты своей программы, но вам придется очень долго заставлять ее работать правильно не на вашем компьютере. В случае же с Java - вы получаете защищенность, независимость от платформы, но, к сожалению, скорость вашей программы вряд ли совместима со сложившимся представлением о скорости, например, какого-либо отдельного клиентского приложения (конечно существуют оговорки - JIT компиляция и прочее). Рассмотрим C++ с этой точки зрения - на мой взгляд соотношение в скорости и защищенности близко к желаемому результату, но на основе собственного опыта программирования я могу с уверенностью сказать, что практически всегда лучше понести незначительную потерю в производительности программы и приобрести такую удобную особенность, как "сборка мусора", которая не только освобождает вас от утомительной обязанности управлять памятью вручную, но и помогает избежать вам многих потенциальных ошибок в вашем приложении. В действительности скоро "сборка мусора", да и любые другие шаги к устранению потенциальных ошибок стану отличительными чертами современного языка. В C#, как в несомненно современном языке, также существуют характерные особенности для обхода возможных ошибок. Например, помимо упомянутой выше "сборки мусора", там все переменные автоматически инициализируются средой и обладают типовой защищенностью, что позволяет избежать неопределенных ситуаций в случае, если программист забудет инициализировать переменную в объекте или попытается произвести недопустимое преобразование типов. Также в C# были предприняты меры для исключения ошибок при обновлении программного обеспечения. Изменение кода, в такой ситуации, может непредсказуемо изменить суть самой программы. Чтобы помочь разработчикам бороться с этой проблемой C# включает в себя поддержку совместимости версий (vesioning). В частности, в отличии от C++ и Java, если метод класса был изменен, это должно быть специально оговорено. Это позволяет обойти ошибки в коде и обеспечить гибкую совместимость версий. Также новой особенностью является native поддержка интерфейсов и наследования интерфейсов. Данные возможности позволяют разрабатывать сложные системы и развивать их со временем.

В C# была унифицирована система типов, теперь вы можете рассматривать каждый тип как объект. Несмотря на то, используете вы класс, структуру, массив или встроенный тип, вы можете обращаться к нему как к объекту. Объекты собраны в пространства имен (namespaces), которые позволяют программно обращаться к чему-либо. Это значит что вместо списка включаемых файлов заголовков в своей программе вы должны написать какие пространства имен, для доступа к объектам и классам внутри них, вы хотите использовать. В C# выражение using позволяет вам не писать каждый раз название пространства имен, когда вы используете класс из него. Например, пространство имен System содержит несколько классов, в том числе и Console. И вы можете писать либо название пространства имен перед каждым обращением к классу, либо использовать using как это было показано в примере выше.

Важной и отличительной от С++ особенностью C# является его простота. К примеру, всегда ли вы помните, когда пишите на С++, где нужно использовать "->", где "::", а где "."? Даже если нет, то компилятор всегда поправляет вас в случае ошибки. Это говорит лишь о том, что в действительности можно обойтись только одним оператором, а компилятор сам будет распознавать его значение. Так в C#, оператор"->" используется очень ограничено (в unsafe блоках, о которых речь пойдет ниже), оператор "::" вообще не существует. Практически всегда вы используете только оператор "." и вам больше не нужно стоять перед выбором.

Еще один пример. При написании программ на C/С++ вам приходилось думать не только о типах данных, но и о их размере в конкретной реализации. В C# все упрощено - теперь символ Unicode называется просто char (а не wchar_t, как в С++) и 64-битное целое теперь - long (а не __int64). Также в C# нет знаковых и беззнаковых символьных типов.

В C#, также как и в Visual Basic после каждого выражения case в блоке switch подразумевается break. И более не будет происходить странных вещей если вы забыли поставить этот break. Однако если вы действительно хотите чтобы после одного выражения case программа перешла к следующему вы можете переписать свою программу с использованием, например, оператора goto.

Многим программистам (на тот момент, наверное, будущим программистам) было не так легко во время изучения C++ полностью освоиться с механизмом ссылок и указателей. В C# (кто-то сейчас вспомнит о Java) нет указателей. В действительности нетривиальность указателей соответствовала их полезности. Например, порой, трудно себе представить программирование без указателей на функции. В соответствии с этим в C# присутствуют Delegates - как прямой аналог указателя на функцию, но их отличает типовая защищенность, безопасность и полное соответствие концепциям объектно-ориентированного программирования.

Хотелось бы подчеркнуть современное удобство C#. Когда вы начнете работу с C#, а, надеюсь, это произойдет как можно скорее, вы увидите, что довольно большое значение в нем имеют пространства имен. Уже сейчас, на основе первого примера, вы можете судить об этом - ведь все файлы заголовков заменены именно пространством имен. Так в C#, помимо просто выражения using, предоставляется еще одна очень удобная возможность - использование дополнительного имени (alias) пространства имен или класса.

Современность C# проявляется и в новых шагах к облегчению процесса отладки программы. Традиционым средством для отладки программ на стадии разработки в C++ является маркировка обширных частей кода директивами #ifdef и т.д. В C#, используя атрибуты, ориентированные на условные слова, вы можете куда быстрее писать отлаживаемый код.

В наше время, когда усиливается связь между миром коммерции и миром разработки программного обеспечения, и корпорации тратят много усилий на планирование бизнеса, ощущается необходимость в соответствии абстрактных бизнес процессов их программным реализациям. К сожалению, большинство языков реально не имеют прямого пути для связи бизнес логики и кода. Например, сегодня многие программисты комментируют свои программы для объяснения того, какие классы реализуют какой-либо абстрактный бизнес объект. C# позволяет использовать типизированные, расширяемые метаданные, которые могут быть прикреплены к объекту. Архитектурой проекта могут определяться локальные атрибуты, которые будут связанны с любыми элементами языка - классами, интерфейсами и т.д. Разработчик может программно проверить атрибуты какого-либо элемента. Это существенно упрощает работу, к примеру, вместо того чтобы писать автоматизированный инструмент, который будет проверять каждый класс или интерфейс, на то, является ли он действительно частью абстрактного бизнес объекта, можно просто воспользоваться сообщениями основанными на определенных в объекте локальных атрибутах.

Сравнение C# с другими языками программирования

C#, являясь последним из широко распространенных языков программирования, должен впитать в себя весь имеющийся опыт и вобрать лучшие стороны существующих языков программирования, при этом являясь специально созданным для работы в .NET. Сама архитектура .NET продиктовала ему (как и многим другим языкам, на которых можно писать под .NET) объектно-ориентированную направленность. Конечно, это не является правилом, возможно создание компиляторов даже функциональных языков по .NET, на эту тему существуют специальные работы.

Свой синтаксис C# во многом унаследовал от C++ и Java. Разработчики, имеющие опыт написания приложений на этих языках, найдут в C# много знакомых черт. Но вместе с тем он является во многом новаторским - аттрибуты, делегаты и события, прекрасно вписанные в общую идеологию языка, прочно заняли место в сердцах .NET - разработчиков. Их введение позволило применять принципиально новые приемы программирования.

Конечно, излюбленным объектом для сравнения с C# у мировой коммьюнити является Java. Также разработанный для работы в виртуальной среде выполнения, имеющей объектно-ориентированную архитектуру и сборщик мусора, осноыванный на механизме ссылок. При сравнении с этим языком сразу выделаются такие особенности, как возможность объявлять несколько классов в одном файле, из чего следует синтаксическая поддержка иерархической системы пространств имен. Из реализации ООП-концепций сходство в механизме наследования и реализации (и в Java и в C# возможно единичное наследование, но множественная реализация интерфейсов, в отличие от C++). Но в Java отсутствуют свойства и индексаторы (а также делегаты и события, но они отсутствуют еще много где). Также есть возможность перечисления контейнеров.

Из вещей, включенных в спецификацию языка, но не являющихся чисто "программистскими" необходимо отметить возможность использование комментариев в формате XML. Если комментарии отвечают специально описанной стркутуре, компилятор по ним может сгенерировать единый XML-файл документации.

Но C# внес и свои уникальные черты, которые уже были упомянуты - это события, индексаторы, аттрибуты и делагаты. Все эти элементы будут обсуждены в следующих частях, сейчас лишь отмечу, что они предоставляют собой очень полезные возможности, которые не останутся невостребованными.

Переходя к более подробному знакомству с C#, традиционно рассмотрим программу "Hello, world": using System;

static void Main() <

Поместите эту программу в файл hello.cs и скомпилируйте ее командой

Так выглядит вызов компилятора в простейшем случае. Далее мы приведем полный список параметров компилятора. При вызове компилятора убедитесь, что у вас прописан путь csc.exe - C Sharp Compiler

В результате вы получите файл hello.exe, запустив который, вы увидите надпись "hello, world".

Метод Main - это точка входа в программу. С него начинается выполнение (те, кто знаком с C++ или Java) понимают, о чем идет речь. Этот метод обязательно должен быть статическим. Далее в нашем примере используется метод WriteLine из класса System.Console. Этот метод отправляет строку на стандартный вывод.

Вы можете также создавать библиотеки классов - dll-сборки, которые могут использоваться другими приложениями. Для этого нужно указать /target:library в опциях компилятора

Если компилятор обнаружит ошибки в программе, он выдаст соответствующее сообщение и остановит процесс компиляции. Также он может выдать предупреждения - если он обнаружит код, который, строго говоря, правильный, но имеет подозрения на ошибку. К таким предупреждениям стоит прислушиваться.

Вообще, компилятор C# имеет множество возможностей, узнать о которых можно из слеующей таблицы. В ней описаны все опции командной строки компилятора CSC:

Выходные файлы/out:<file> Имя выходного файла (если не указано - производное от имени первого исходного файла)

/target:exe Скомпилировать консольный запускаемый файл (по умолчанию) (Краткая форма: /t:exe)

/target:winexe Скомпилировать запускаемый файл Windows (Краткая форма: /t:winexe)

/target:library Скомпилировать в библиотеку DLL (Краткая форма: /t:library)

/target:module Скомпилировать модуль, который может быть добавлен в другую конструкцию (Краткая форма: /t:module)

* Примечание: Модуль и библиотека имеют одинаковые расширения (DLL), но несмотря на это, они представляют из себя разные вещи. Библиотека - это классическая библиотека DLL. Модуль - это файл откомпилированный без создания конструкции (assembly). В дальнейшем вы можете добавить модуль в любую другую конструкцию при компиляции (с помощью опции /addmodule). /nooutput[+|-] Только проверять ошибки в коде; не создавать запускаемый файл

/define:<список символов> Определяет директивы препроцессора (Краткая форма: /d)

Написание csc /define:mark1 MyApp.cs равносильно наличию в файле строки

/doc:<file> Создать XML файл документации

Входные файлы/recurse:<маска> Включить все файлы, удовлетворяющие маске.

/main:<тип> Обозначить класс, содержащий точку входа в программу (все остальные будут игнорироваться) (Краткая форма: /m)

/reference:<список файлов> Включить метаданные из указанных файлов конструкций (Краткая форма: /r)

* Примечание: все данные, помеченные как public, из указаных файлов конструкций будут включены в данную конструкцию. Если файл не содержит объявления конструкции, то метаданные из него могут быть включены с помощью /addmodule./addmodule:<список файлов> Включить указанные модули в сборку

Ресурсы/win32res:<file> Добавляет файл ресурсов Win32(.res) в выходной файл

/win32icon:<file> Добавляет иконку в выходной файл

/resource:<resinfo> Включает .NET ресурс (Краткая форма: /res)

* Примечание: resinfo являет собой следующую последовательность: filename[,identifier[,mimetype]], где filename - имя файла ресурса, identifier - логическое имя ресурса (используется для его загрузки), mimetype - медиа тип ресурса (обычно отсутствует). /linkresource:<resinfo> Создает ссылку на ресурсный файл в данной сборке (не включая его в выходной файл)(Краткая форма: /linkres)

Создание кода/debug[+|-] Создавать информацию отладки.

/debug: Указание типа отладки ('full' - по умолчанию, позволяет прикреплять отладчик к запускаемой программе)

/optimize[+|-] Запускать оптимизацию (Краткая форма: /o)

/incremental[+|-] Запускать компиляцию только измененных частей кода(Краткая форма: /incr)

Ошибки и предупреждения /warnaserror[+|-] Относиться к предупреждениям, как к ошибкам

/warn:<n> Установить уровень предупреждений (0-4) (Краткая форма: /w)

/nowarn:<список предупреждений> Исключить указанные предупреждения

* Примечание: список предупреждений - последовательность их номеров num1[,num2[. ]]

Язык/checked[+|-] Выполнять проверки на переполнения и опустошения

/unsafe[+|-] Допускать unsafe код (unsafe код - небезопасный код, он будет обсужден в дополнительных главах)

Разное@<file> Прочтение команд и опций компилятора из файла

/help Показывает информацию о использовании (Краткая форма: /?)

/nologo Не показывать копирайт при компиляции

Дополнительно/baseaddress:<address> Базовый адрес для создаваемой библиотеки

/bugreport:<file> Создавать файл отчета об ошибках

/codepage:<n> Указать таблицу символов, для использования во время открытия исходного текста

/fullpaths Компилятор будет указывать полные имена файлов

/nostdlib[+|-] Не допускать включения стандартной библиотеки (mscorlib.dll). В этой библиотеке хранятся все основные классы .NET Framework.

Пример программы на C#

Теперь пришло время "пощупать" новый язык - посмотреть как он на вкус. Для этого мы разберем небольшую программу на C#.

// Используем основные классы .NET Framework

// Объявляем, что мы работаем в пространстве имен SampleProgram

/// Класс Client содержит информацию о кленте - его имя и баланс счета

/// Эта переменная хранит имя клиента

private string _name;

/// Эта переменная хранит баланс счета клиента

private int _balance;

/// Это свойство используется для доступа к имени клиента.

/// Принято все переменные класса закрывать для доступа извне

/// и предоставлять доступ к ним через свойства, чтобы контролировать

public string Name

// Здесь мы определяем код, который будет использован для

// получения значения свойства

// Этот код служит для присвоения свойству нового значения

// Параметр value здесь представляет новое значения свойства

/// Это свойство служит для доступа к счету клиента. Доступ на

/// запись для него закрыт, чтобы нельзя было извне класса

/// в обход его методов изменить сумму на счету клиента.

public int Balance

/// Здесь мы определяем констуктор - метод, используемый

/// для создания нового объекта данного класса.

/// Параметр name задает имя для нового клиента

/// Параметр initialCash задает начальную сумму, которая будет на его счету

public Client( string name, int initialCash )

// Задаем имя клиента через свойство

// Задаем начальный счет через непосредственный доступ к переменной

/// Этот метод перечисляет деньги на счет клиента

/// Этот параметр задает сумму, которая будет перечислена

/// Этот параметр задает идентификатор транзакции для проверки подлинности перечисления

public void AddMoney( int amount, int transactionID )

// Если транзакция верна

// Иначе генерируем исключение

throw new Exception("Wrong transaction ID");

/// Этот метод переопределяет стандартный метод ToString, определенный в классе

/// System.Object. По умолчанию этот метод выводит класс объекта.

/// Метод возвращает стороковое представление объекта

public override string ToString()

return Name + " (" + Balance + ")";

/// Класс транзакции. В нашем примере он будет лишь проверять правильность идентификатора транзакции

public class Transaction

/// Этот метод проверяет, верный ли идентификатор ему передан

/// Идентификатор для проверки

/// Возвращает true, если идентификатор верен и false если нет

public static bool CheckID( int id )

// В нашем примере идентификатор считается правильным, если он не делится на 2

return id % 2 != 0;

/// Класс приложения - класс, предстваляющий основное направление выполнения программы.

/// В нем определена точка входа

public class Application

/// Точка входа в программу

public static void Main()

// Создаем нового клиента по имени Johny Smith и двумястами долларами на счету

Client client = new Client("Johnny Smith", 200);

// Выводим начальное состояние клиента

// Благодаря перегрузке метода ToString, мы получим информацию о клиенте

Console.WriteLine("Начальное состояние: " + client);

// Следующий код мы заключаем в try. catch блок, так как в нем могут

// Этот блок будет вызван, если возникнет исключение

Console.WriteLine("Перечисление денег было отклонено");

// Этот код будет вызван в любом случае либо по отработке блока catch, либо блока try

Console.WriteLine("Конечное состояние клиента: " + client);

Приведенная программа демонстрирует различные аспекты C#. Что касается логики, она просто создает объект класса Client и пытается изменить состояние его счета. Первый раз удачно, второй - нет. Программа выводит на экран следющий текст:

Начальное состояние: Johnny Smith (200)

Перечисление денег было отклонено

Конечное состояние клиента: Johnny Smith (200)

Ввиду очень удобного объектно-ориентированного дизайна, C# является хорошим выбором для быстрого конструирования различных компонентов - от высокоуровневой бизнес логики до системных приложений, использующих низкоуровневый код. Также следует отметить, что C# является и Web ориентированным - используя простые встроенные конструкции языка ваши компоненты могут быть легко превращены в Web сервисы, к которым можно будет обращаться из Internet посредством любого языка на любой операционной системе. Дополнительные возможности и преимущества перед другими языками приносит в C# использование передовых Web технологий, таких как: XML и SOAP

Список использованных источников

1. Лахатин, А.С. Языки программирования. Учеб. пособие / А.С. Лахатин, Л.Ю. Искакова. - Екатеринбург, 1998. - 548с.: ил.

2. Богатырев, А. Язык программирования С [Электронный ресурс] / А. Богатырев.- электр. дан. - Режим доступа: http://www.refby.com. - Загл. с экрана.

3. Уэйт, М. Язык С. Руководство для начинающих. / М. Уэйт, С. Прага, Д. Мартин. - М.: Мир, 1995. - 521с.: ил.

4. Фридман, А.Л. Язык программирования С++ / А.Л.Фридман. - М.: Бином, 2006. - 523с.: ил.

Для продолжения скачивания необходимо собрать картинку:

Источник:

studfiles.net

C# на примерах в городе Магнитогорск

В данном интернет каталоге вы имеете возможность найти C# на примерах по разумной цене, сравнить цены, а также найти другие книги в категории Компьютеры и интернет. Ознакомиться с параметрами, ценами и рецензиями товара. Доставка товара может производится в любой населённый пункт России, например: Магнитогорск, Кемерово, Томск.