- •Основы c#. Урок 1. Что такое c#?
- •Основы c#. Урок 2. Что такое net Runtime?
- •Основы c#. Урок 3. Первая программа на c#
- •Основы c#. Урок 4. Переменные языка c#
- •Основы c#. Урок 5. Логические операторы
- •Основы c#. Урок 6. Массивы в c#
- •Основы c#. Урок 7. Операторы if и switch
- •Основы c#. Урок 8. Циклы for и foreach
- •Основы c#. Урок 10. Классы в c#
- •Основы c#. Урок 9. Цикл while
- •Основы c#. Урок 11. Конструкторы классов
- •Основы c#. Урок 12. Наследование
- •Основы c#. Урок 13. Запись в экземпляр базового класса экземпляра производного
- •Основы c#. Урок 14. Вложенные классы
- •Основы c#. Урок 15. Перегрузка бинарных операторов
- •Основы c#. Урок 16. Перегрузка унарных операторов
- •Основы c#. Урок 17. Область видимости
- •Основы c#. Урок 18. Виртуальные функции
- •Основы c#. Урок 19. Абстрактные классы
- •Основы c#. Урок 20. Запрещение наследования или модификатор sealed
- •Основы c#. Урок 21. Статические переменные
- •Основы c#. Урок 22. Статические методы класса
- •Основы c#. Урок 23. Статические конструкторы
- •Основы c#. Урок 24. Закрытые конструкторы или классы без экземпляров
- •Основы c#. Урок 25. Передача параметров переменой длины
- •Основы c#. Урок 26. Строки (класс System.String)
- •Основы c#. Урок 27. Строки (класс StringBuilder)
- •Основы c#. Урок 28. Передача параметров по ссылке и по значению (ref и out)
- •Основы c#. Урок 29. Пример передачи по ссылке
- •Основы c#. Урок 30. Перегрузка
- •Основы c#. Урок 31. Функции класса System.Array
- •Основы c#. Урок 32. Делегаты
- •Основы c#. Урок 33. События
- •Основы c#. Урок 34. Пример класса с событием
- •Основы c#. Урок 35. Введение в атрибуты
- •Основы c#. Урок 36. Пример пользовательского атрибута
- •Основы c#. Урок 37. Параметры командной строки
- •Основы c#. Урок 38. Метод Main в отдельном классе
- •Основы c#. Урок 39. Форматированный вывод
- •Основы c#. Урок 40. Класс System.Object
- •Основы c#. Урок 41. Методы класса System.Object
- •Основы c#. Урок 42. Переопределяем методы класса System.Object
- •Основы c#. Урок 43. Константы
- •Основы c#. Урок 44. Модификаторы доступа
- •Основы c#. Урок 45. Ссылка на текущий экземпляр класса (this)
- •Основы c#. Урок 46. Класс Environment
- •Основы c#. Урок 47. Работаем со специальными папками
- •Основы c#. Урок 48. Получаем список всех дисков
- •Основы c#. Урок 49. Ввод/вывод в c# (System.Io)
- •Основы c#. Урок 50. Классы для работы с папками и файлами
- •Основы c#. Урок 51. Класс Directory
- •Основы c#. Урок 52. Класс File
- •Основы c#. Урок 53. Класс FileSystemInfo
- •Основы c#. Урок 54. Класс DirectoryInfo
- •Основы c#. Урок 55. Перечисление FileAttributes
- •Основы c#. Урок 56. Класс FileInfo
- •Основы c#. Урок 57. Пример: получение имен всех подпапок
- •Основы c#. Урок 58. Класс Path
- •Основы c#. Урок 59. Класс FileSystemWatcher
- •Основы c#. Урок 60. Перечисление NotifyFilters
- •Основы c#. Урок 61. Перечисление WatcherChangeTypes
- •Основы c#. Урок 62. Класс FileSystemWatcher - пример использования
- •Основы c#. Урок 63. Сериализация класса
- •Основы c#. Урок 64. Класс BitArray
- •Основы c#. Урок 65. Класс Stack
- •Основы c#. Урок 66. Класс SortedList
- •Основы c#. Урок 67. Конвертация типов через класс Convert
- •Основы c#. Урок 68. Работа с перечислениями (enum)
- •Основы c#. Урок 69. Использование атрибута Flags для перечисления
- •Основы c#. Урок 70. Использование атрибута Flags для перечисления 2
- •Основы c#. Урок 71. Nullable типы
- •Основы c#. Урок 72. Reflection - динамическое создание кода
- •Основы c#. Урок 73. Reflection - создание enum'ов
Основы c#. Урок 3. Первая программа на c#
Ну, хватит нам заниматься теорией. Пора переходить к практике. Пишем первую программу на C#. Запускайте Visual Studio.NET. Для создания нового пустого проекта C# нажимаем на кнопку в New Project (самая левая на панели инструментов), или нажимаем комбинацию клавиш Ctrl + Shift + N, или просто заходим в меню File и далее выбираем New и затем Project:
В появившемся окне New Project слева выбираем, естественно, Visual C#, а справа тип приложения - Console Application:
В качестве имени проекта (Name) напечатайте first или что-то в этом роде. Нажмитие на кпопку для закрытия данного диалогового окна.
Теперь приступаем к коду. Наша первая программа просто выведет некоторое фиксированное слово в консольное окошко. Вот ее листинг.
using System;
namespace first
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
Console.WriteLine("Привет из C#");
}
}
}
Запускаем программу, нажав Ctrl+F5. Результат будет таким:
Разберем текст программы поподробнее. Как вы знаете из предыдущего урока, в .NET Runtime существуют пространства имен. Одно из таких пространств - это System. Вообще-то оно добавляется автоматически в любой проект на C#. Так как мы добавили в нашу программу строчку
...
using System;
...
то мы можем вместо длинных имен использовать более короткие. В частности, вместо System.Console можно писать просто Console. Что мы делаем в строчке
...
Console.WriteLine("Привет из C#");
...
Далее мы в нашей программе объявляем класс Class1. Что такое классы мы посмотрим в последующих уроках, сейчас же достаточно сказать, что в C# не существует глобальных функций, так что нам ничего не остается, как завести сначало класс и затем функцию Main в нем (функция Main обязательно должна быть в каждой программе на C#, и именно с этой функции и начинается выполнение программы. Обратите также внимание, что эта функция пишеться с прописной (большой) буквы. C# различает строчные и прописные буквы, так что это важно). Кроме того, эта функция объявлена с модификатором static. Это означает, что она не относится к конкретному экземпляру класса Class1, а принадлежит всему классу. В нашей функции Main мы просто выводим на экран некоторую строчку методом WriteLine.
С первой программой на C# все.
Основы c#. Урок 4. Переменные языка c#
Для каждого типа данных C# существует соответствующий тип данных в CLR (Common Language Runtime). Подробности CLR см. в уроке 2. Это, в частности, означает, что каждый тип имеет два названия - полный (из CLR, его можно использовать в любом языке .NET) и сокращенный, который используется в C#. Что за название использовать - это дело вкуса. Но короткие названия во-первых, короче, и во-вторых, как-то привычнее, так что мы в наших уроках будем использовать короткие названия C#. На этом же уроке мы приведем как полные названия (из CLR), так и краткие.
Основные типы данных перечислены в следующей таблице:
C# |
CTS (.NET) |
Диапазон |
sbyte |
System.SByte |
-128..127 |
byte |
System.Byte |
0..255 |
short |
System.Int16 |
-32768..32767 |
ushort |
System.UInt16 |
0..65535 |
long |
System.Int64 |
-263..263-1 |
float |
System.Single |
+1.5E-45..+3.4E+38 (32 Bit) |
double |
System.Double |
+5E-324..+1.7E+308 (64 Bit) |
decimal |
System.Decimal |
+1E-28..+7.9E+28 (128 Bit) |
bool |
System.Boolean |
true, false |
char |
System.Char |
Символ (в коде unicode) |
Если вы предпочитаете использовать длинные имена, то вы должны писать что-то вроде System.Int32 для типа int и т. п. (т. е. приписывать слово System перед CLR-именем). Или же вы должны добавить строчку
using System;
в начале программы (хотя, впрочем, она там скорей всего и так есть).
Таким образом следующие три объявления переменной k равносильны:
int k;
using System;
...
Int32 k;
и
System.Int32 k;
Разумеется, аналогично мы имеем дело и с другими типами языка C#.
Объявление переменной можно совместить с инициализацией (заданием начального значения):
int z=88;
Набор операторов для C# достаточно стандартен + , -, *, / - действуют как и в любом другом языке. Отметим только, что / (деление) применительно к целым числам дает целую часть от деления. Так, фрагмент
int k=100999, n=1000, s;
s=k/n;
Console.WriteLine(s.ToString());
выведет на экран 100, а не 101, т. е. никакого округления не происходит.
Есть еще один оператор - %. Это - остаток от деления. Следующий фрагмент выведет на экран 999:
int k=100999, n=1000, s;
s=k%n;
Console.WriteLine(s.ToString());
Как и в других C-подобных языках, в C# существуют операторы инкремента и декремента. Так, после следующего фрагмента k увеличится на 1, а n - уменьшится на 1:
k++;
n--;
