Урок по C# №2: “Более детальное знакомство с языком”


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

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

В прошлом уроке вы скомпилировали свой первый проект без специальной среды разработки. Безусловно,  это будет плюсом к вашим умениям, однако серьезные программы на C# так не напишешь. К счастью, всегда есть бесплатные среды разработки типа VC # Express или Sharp Developer.

В своих уроках я буду использовать VC #.  У меня стоит лицензионная Visual Studio 2008, которая меня пока еще устраивает (хотя уже сейчас планирую приобрести VS 2012) и VC# 2010 Express. Поэтому в своих уроках я буду использовать обе этих среды. В вашем же случае можно использовать сразу 2010 версию или 2012. Помните, в программировании всегда нужно использовать последние технологии, иначе вы рискуете остаться в стороне.

Несмотря на то, что разные среды разработки отличаются друг от друга, их интерфейс всегда почти одинаков. Освоив среду разработки VC# 2010 Express, вы без труда разберетесь и в VC# 2012. К сожалению, этого нельзя сказать о самом C#.

Когда C# появился, его считали этаким гадким утенком в мире программирования. Как быстрая и легкая среда разработки  для десктопов доминировала Delphi, а java прочно удерживала позиции в net разработке. Я сам лично помню, как гуру программирования плевались на  C# и пророчили ему скорую гибель.

Многим программистам C# казался дурацкой шуткой, подделкой под java. Кто-то даже утверждал, что это Майкрософт пытается компенсировать утерянный MS J++.  Таким Майкрософт любезно указывала на своего мутанта J#, который канул в Лету. Никто не понимал, зачем он вообще нужен. Дотнетовские программы уступали в скорости программам, скомпилированным в нативный код, не обладали явашной переносимостью и т.д.

Это был трудный период для языка, который он прошел. Да, C# много чего не умел делать. Тогда решено было дополнять его различными конструкциями. В VS 2005 уже вошел обновленный C# под стандартом 2.0. Это был воистину гигантский скачок в развитии языка. Помимо добавления дженериков и прочего, в язык были добавлены некоторые новые возможности. Кроме того, C# мог использовать новые классы и методы, доступные из новой .Net Framework 2.0.  Кроме того, в этот период вышла неудачная операционная система Windows Vista. А вот разработчики для нее уже поняли всю прелесть переносимости приложений между платформами и стали активно использовать C#.

Следующими были C# 3.0, C# 4.0 и C# 5.0 (последняя). Они отличаются друг от друга уже не так сильно, как 2.0 от первой версии, но эти отличия учитывать все же нужно. В любом случае, стандартом изучения считает C#2.0 и выше. Мы же будем с вами изучать в основном C# 4.0. Думаю, что вы немного разобрались с этим.

Итак, давайте создадим наш проект уже в среде VC# Express 2010. Запустите программу и выберите тип приложения -> Консольное приложение. Дайте имя проекту lesson1 и нажмите Ok.

Как видите, среда автоматически создала за нас весь код, который в прошлом уроке нам пришлось набирать вручную. Удобно, не так ли?

Основные моменты кода вам уже должны быть знакомы. Там где вы видите операторы using мы подключаем пространства имен. Что такое пространства имен мы рассмотрим позже. Потом вы увидите, что среда автоматически создала для нас собственное пространство имен, в которое включило наш класс. Как я уже говорил, программа на C#, равно как и на java, состоит из одного или нескольких классов, в котором есть метод Main. Учтите, что метод Main может быть всего один в программе. Что такое метод Main? Это точка входа в программу. Операционная система определяет, что нужно создать новый поток для этой программы. Если у вас не будет метода main, ваша программа никогда не будет исполняемой.

Система для нас автоматически создала класс Program. Мы его оставим без изменения. Пока мы оставим понятия ООП для следующих уроков. Обратите внимание, что перед методом Main стоит ключевое слово static. В контексте C# это означает, что метод принадлежит классу (в нашем случае, это будет равносильно обычным функциям и процедурам в том же Делфи). Иногда такой метод называют статическим, однако его правильнее называть общим, как в VB (shared) или методом класса. Дело в том, что доступ к обычным методам осуществляется через имя объекта. Метод класса не требует создания объекта и может вызываться сразу же из самого класса. Чтобы пояснить, что я здесь понаписал, давайте рассмотрим на примере.

class Some
{
int a, int b;
static int Summ ()
{ return a+b;}
}
int Summ1 ( )
{
return a+b;
}
}

Учтите, что это сильно упрощенный код класса. Так писать можно, но не стоит. Я сильно упростил вам код, чтобы он был понятен вам. Итак, что мы имеем: это класс Some с двумя перменными a и b. Класс также обладает двумя методами сложения этих двух чисел. Один из них является методом класса. Теперь посмотрите на то, как это выглядит в коде:

Some some=new Some (); //создадим объект класса Some
Console.WriteLine (some.Summ1 ()); // используем метод объекта some
Console.WriteLine (Some.Summ()); //используем метод класса Some

Уловили разницу? В первом случае мы создавали отдельный объект и обращались к его полям, а во втором –использовали метод самого класса. Более подробно мы рассмотрим этот момент в других уроках. Сейчас вам важно понять, что все функции в своем коде, если они вызываются у вас в этом же классе (у меня это Programm), нужно ставить с модификатором static. Иначе вам придется использовать полное имя – Program.имя_метода.

Наверняка вы обратили внимание на конструкцию Console.WriteLine (). Здесь как раз мы и используем метод WriteLine класса Console, который выводит различную информацию на экран, в зависимости от параметра, который мы ему передадим. Более подробно мы рассмотрим это в следующем уроке.

Видите, C# уже сразу приучает программиста думать категориями ООП, что не может не радовать. Увы, многие не любят его именно из-за этого. Хотя объекты –очень полезная штука. В своих уроках я буду больше налегать как раз на приучение вас к ООП.

Давайте модифицируем немного код нашей программы. Создайте переменную name типа string и введите в нее свое имя. Кроме того, давайте научим консоль печатать разным цветом, благо класс Console обладает свойством ForegroundColor, который отвечает за цвет текста. Итак, весь код будет таким:


using System;
using System.Collections.Generic;
using System.Text;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "Первая программа"; //заголовок программы
            Console.ForegroundColor = ConsoleColor.Yellow; //установим желтый цвет
            Console.WriteLine ("Введите свое имя");
            string name = Console.ReadLine(); //вводим имя
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Привет " + name);
            Console.ReadLine(); //чтобы программа не закрылась

        }
    }
}

Вот, что выведется на экран.

Тем не менее, многие вещи для вас могут быть пока непонятны. Например, переменные и т.д. Отдохните немного, чтобы в следующем уроке рассмотреть все это более подробно.

<<Предыдущий урок                                                                     Следующий урок>>

Рубрика: Уроки по C#

Комментарии

12 коммент. на “Урок по C# №2: “Более детальное знакомство с языком””
  1. Борис:

    Здравствуйте! На Ваших уроки все очень понятно и доходчиво, как часто они будут выходить?

  2. Борис:

    Ссылка RSS выводит надпись invalid feed request Error 400, подписаться на новости не получилось.

  3. admin:

    Спасибо, что сообщили об ошибке. Вечером просмотрю и исправлю.

  4. Костя:

    Добрый день. И спасибо за уроки.
    Хочу научится программированию, вот и читаю ваши уроки.
    Всё хорошо расписано,
    единственное … у меня вызывало ошибку
    (Ошибка 1 Имя типа или пространства имен «ComponentModel» отсутствует в пространстве имен «System» (пропущена ссылка на сборку?))
    Пришлось гуглить и добавлять её. Если вкратце, то в меню Проект -> Добавить ссылку на сборку и т.д.
    Думаю кому-то помогу, кто столкнётся с данной проблемой.

  5. Леван:

    В SharpDeveloper-е выдаёт ошибку в строке

    using Sustem.Windows.Forms:

    Имя типа или пространства имен ‘Windows’ отсутствует в пространстве имен ‘System’ (пропущена ссылка на сборку?) (CS0234)

    SharpDevelop Version : 4.3.1.9430-406354be
    .NET Version : 4.0.30319.233
    OS Version : Microsoft Windows NT 5.1.2600 Service Pack 3

    • Вячеслав "VeGA" Головлев:

      М-да, вижу. Ошибка и будет, потому что ссылки на сборку в консольной программе мастер не добавляет автоматически. У меня в коде using Sustem.Windows.Forms в этом контексте лишний. Его не нужно писать — это я хотел просто сделать программу, вызывающие графические окна, а потом передумал. Урок исправил

  6. Андрей:

    При попытке подписаться вылезла ошибка
    invalid feed request

    Error 400
    в чем проблема?

  7. Роман:

    Здравствуйте. Благодарю вас за эти полезные уроки. Проверьте, пожалуйста, класс Some, возможно там ошибка. По-моему статический метод Summ может вызываться после имени класса, а метод Summ1 только через объект класса.

    • admin:

      Да, это ошибка. Статический метод как раз Summ, я уже обратил на это внимание. Что сделаешь, косячу…

  8. admin:

    Вообще, я планирую их делать достаточно часто (где-то 2 урока в день). Так что подписывайтесь на RSS и следите за обновлениями.

Добавить комментарий

Внимание! Не будут добавляться комментарии в виде откровенного спама или прямого анкора на свои сайты. Все спамеры будут передаваться в базу Akismet

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: