26
Здравствуй, C#!
Категория: Уроки Автор: Дмитрий Ляпин Опубликовано: 26-02-2011
Метки: .Net, csharp, hello world
На прошлом уроке мы подготовили рабочее место, установив и опробовав среду разработки. В качестве примера мы написали простейшее приложение, выводящее текст на экран. Сегодня давайте разберем каждую его строчку.
Я немного упростил исходный код, убрав все лишнее:
1 2 3 4 5 6 7 8 9 10 11 12 13 | using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("Привет от Net Framework!"); Console.ReadKey(); } } } |
Задача программы – вывести на экран сообщение: «Привет от Net Framework!». В ее коде 12 строк (не считая пустую), хотя проблему решает всего одна:
9 | Console.WriteLine("Привет от Net Framework!"); |
Перед тем, как мы начнем детально разбирать текст программы, хочу донести важно сообщение:
Язык C# полностью объектно-ориентирован, в нем не бывает простых функций, любой код содержится внутри некого класса. Даже если вы пока не знаете, что такое классы и объекты – это не беда. Просто запомните, что любая программа C# целиком и полностью состоит из классов.
Наше подопытное приложение – консольное, выглядит результат так:

Для работы с консолью в .Net Framework служит специальный класс – Console. Один из его методов предназначен для вывода строки на экран – WriteLine.
Программа работает линейно и завершает свое выполнение после того, как все инструкции выполнены. Так что, если мы не предпримем специальных усилий, приложение сразу же завершит свою работу после вывода текста на экран. Мы даже не успеем ничего разглядеть.
Имеено по этой причине в программу добавлен вызов метода ReadKey у класса консоли. В результате такого вызова приложение приостановит работу, пока пользователь не нажмет какую-либо клавишу.
10 | Console.ReadKey(); |
Этих двух строк достаточно для выполнения задачи, но мы не можем «повесить их в воздух». Программа должна быть правильно оформлена.
Поскольку в языке C# все состоит из классов, то не может быть исключением и наша программа. Мы объявили класс Program, в котором реализовали метод Main. Эти названия мы не придумали, они должны быть именно такими, чтобы среда поняла, где точка входа, то есть откуда следует начинать выполение программы.
5 6 7 8 | class Program { static void Main(string[] args) { |
Классы в C# группируются в пространства имен (namespaces). Это можно сравнить с файлами и папками. Если мы свалим все файлы в одно место, то ни за что не сможем разобраться в этом беспорядке. Также будет невозможным иметь два файла с одним именем. Эти же проблемы решают пространсва имен, они служат для упорядочивания классов и избежания конфликтов имен.
Класс нашей программы находится в пространстве имен ConsoleApplication1, его, конечно, можно переименовать.
3 4 5 6 | namespace ConsoleApplication1 { class Program { |
Класс Console находится в пространсве имен System. Мы могли бы обращаться к нему так:
System.Console.WriteLine("Привет от Net Framework!");
А можно в начале файла указать использование пространства имен и обращаться к его классам проще. Для этого в C# существует директива using:
1 | using System; |
Таким образом, наша программа состоит из 12 строк, лишь 2 из которых являются полезными. КПД получается 17%. Конечно, это грубая оценка, и ее стоит воспринимать скорее как юмор.
C# действительно не самый лаконичный язык, однако он очень приятный и мощный, с чем вам еще предстоит познакомиться ближе!






В общем, объектно ориентированый подход должен знать любой программист, а там уже и Java и C# и тд. будет идти на легке.
Принцип то один и тот же.
Вот про ООП поподробней
в примере Console-эт скорее объект. а то Program класс и консоле класс- люди запутаются)
Console это не обьект
Класс Console находится в пространстве имен System.
Все методы данного класса являются статическими, поэтому их вызов осуществляется не от экземпляра класса а от самого класса. В C# весь код должен содержаться внутри класса, VS сразу создает основной класс Program. А уже в нём используются статические методы класса Console из пространства имён System.
Ребята не подскажите откуда включить нумерацию строк, это очень полезно, но как то не получается найти.
заранее спасибо
«Console.ReadKey();»
в ()-ах поставится что нибудь(если там поставим цифри, они что то будут означать?)
что можно внутри кавычках написать?
Цифры ничего значить не будут, в скобках пишется имя арумента, к примеру переменной. Цифрами можно указывать только так: String.Format(«{0}, {1}», arg_0, arg_1); Где в скобках {} указывается номер переменной по порядку, что следует дальше после кавычек через запятую.
Спасибо . Для урока очень, очень мало . В таком темпе изучить C# на уровне приобретения умений по объёму книги Нейгела потребуется многовато месяцев .
в ()-ах поставится что нибудь(если там поставим цифри, они что то будут означать?) что можно внутри кавычках написать?
В скобках передаются параметры в методы. ReadKey – функция без параметров, так что подставлять туда ничего не получится. А вот функция WriteLine принимает в качестве параметра строку, которая как раз записывается в двойных кавычках.
Ребята не подскажите откуда включить нумерацию строк
Ответ здесь:
в примере Console-эт скорее объект. а то Program класс и консоле класс- люди запутаются)
Нет, это неправильно.
В таком темпе изучить C# на уровне приобретения умений по объёму книги Нейгела потребуется многовато месяцев
В каком темпе? Курс еще не начался. Пока мы проводим подготовительные занятия.
Андрей, вообще-то это обзорные уроки по языку и технологии, так сказать чтоб новички знали что есть что. Когда начнётся сам вэбинар почувствуешь как много информации придётся изучить. А там придётся прибегать не только к Нейгелу и Троелсену, но и к MSDN и другим ресурсам, форумам, чтоб понять и выполнить ДЗ в срок.
Мне понравилась статья, однако появились некоторые вопросы.
Дело в том, что я предпочитаю Linux.
Так вот, можно ли, есть какой нибудь способ компилировать и использовать эти программы в Linux?
Ser, решение есть. Почитайте про Mono:
Ребята у кого-то ест сериник, ато у Меня 22 дней осталось:((
Please help!!!!
На что серийник? На экспресс версию? Просто зарегистрируй на Microsoft.com и всё. Если ты качал пробную VS, то лучше скачать на рутрекере, там выложены все MSDN версии продуктов для подписчиков с вшитыми ключами (MSDN подписка стоит денег) так что там можно скачать лицуху, которую получают подписчики с ключами.
Не известно еще когда стартует курс?
Не известно еще когда стартует курс?
Выложу еще один подготовительный урок и через некоторое время откроем набор.
«C# действительно не самый лаконичный язык»
Дмитрий, а какой язык, на твой взгляд заслуживает, звание самого лаконичного?
Дмитрий, а какой язык, на твой взгляд заслуживает, звание самого лаконичного?
Среди тех, с которыми знаком – пожалуй, Erlang.
Никогда не слышал о таком. Покопался в инете, взлянул на синтаксис -весь не обычно, не привычно даже!
Когда же уже начало? Нетерпится уже))