
- •Введение
- •Основные сведения по языку c#
- •Общие сведения о .Net Framework
- •C# и платформа .Net Framework
- •Средства разработки для .Net Framework
- •СредаClr
- •Понятие сборки (assembly)
- •Jit-компиляция
- •Просмотр метаданных
- •Сборка мусора
- •Обзор иср
- •Иср Visual c# Express
- •Стартовая страница
- •Консольное приложение
- •Приложения Windows
- •ИсрVisual Studio .Net
- •ИсрSharpDevelop
- •Основы языка c#
- •Алфавит
- •Комментарии
- •Идентификаторы
- •Ключевые слова
- •Переменные и константы
- •Структура программы на c#
- •Пространства имен
- •Main() и аргументы командной строки
- •Операторы
- •Основные операторы
- •Унарные операторы
- •Аддитивные операторы
- •Мультипликативные операторы
- •Операторы сдвига
- •Операторы отношений
- •Операторы присваивания
- •Арифметическое переполнение
- •Математические операции
- •Литералы
- •Описание
- •Структуры
- •Инкапсуляция
- •Наследование
- •Полиморфиэм
- •Конструкторы
- •Деструкторы
- •Интерфейсы
- •Делегаты
- •Типы значений
- •Ссылочные типы
- •Тип dynamic
- •Тип object
- •Тип string
- •Встроенные базовые типы
- •Типы чисел
- •Типы целых чисел
- •Типы чисел с плавающей запятой
- •Значения типов по умолчанию
- •Преобразования типов
- •Стандартное форматирование чисел
- •Нестандартное форматирование чисел
- •Тип char - символы
- •Тип enum - перечисление
- •Тип DateTime
- •Свойства
- •Задание типов в объявлениях переменных
- •Инструкции, введение
- •Выражения
- •Разделители
- •Решения и ветвления
- •Безусловный переход вызовом функций
- •Ветвление if; else
- •Вложенные ветвления if; else
- •Выбор switch; case
- •Команда goto и метки
- •Цикл for
- •Цикл while
- •Цикл do- while
- •Безусловные переходы
- •Вечные циклы
- •Команда foreach
- •Обработкаошибок и исключений
- •Try, Catch
- •Try, Catch, Finally
- •Работа со строками
- •Представление строк
- •Метод ToString()
- •Доступ к отдельным знакам
- •Массивы и коллекции
- •Коллекции
- •Массивы
- •Использование инструкции foreach, in
- •Графика
- •Объект Graphics
- •Перо (Pen)
- •Кисть (Brush)
- •Шрифты и текст
- •Методы рисования
- •Методы заливки
- •Рисование графика функции
- •Растровая графика
- •Примитивные компоненты
- •Подробнее оCil
- •Ассемблер cil
- •Архитектура виртуальной машиныCil
- •Память для метода
- •Система типовCts
- •Типы в базовых классах .Net, c# и cil
- •Пользовательские типы данных
- •Упакованные типы-значения
- •Виртуальная система выполнения
- •Стек вычислений
- •Автоматическое управление памятью
- •Лексемы в cil
- •Директивы cil
- •Атрибуты cil
- •Коды операций в cil
- •Команды загрузки
- •Команды выгрузки
- •Вычислительные команды
- •Арифметические инструкции
- •Переходы и вызовы в il
- •Трансляция вCil
Try, Catch
Ключевые слова try и catch используются вместе. Если предполагается, что блок кода может вызвать исключение, воспользуйтесь ключевым словом try, и используйтеcatch, чтобы сохранить код, который будет выполнен при возникновении исключения. В этом примере в результате деления на ноль создается исключение, которое затем перехватывается. При отсутствии блоков try и catch произойдет сбой программы.
Синтаксис инструкции:
try
{
// Проверяемый код здесь
}
catch (SomeSpecificException ex)
{
// Код обработчика исключения здесь.
}
Пример. Обработка исключенияDivideByZeroException–деление на 0
using System;
class ProgramTryCatch
{
static void Main()
{
int x=0, y=0;
try
{
x = 10 / y; // Проверяемая инструкция, возможно деление на 0
}
catch (DivideByZeroException) // Обработчик исключения
{
Console.WriteLine("Попытка деления на 0.");
}
}
}
Try, Catch, Finally
Код, содержащийся в блоке finally, выполняется всегда, вне зависимости от возникновения исключения. Чтобы гарантировать возвращение ресурсов, например, убедиться, что файл закрыт, используйте блок finally.
Синтаксис инструкции:
class ProgramTryCatchFinally
{
static void Main()
{
try
{
// Проверяемый код здесь
}
catch (<ИмяИсключения>)
{
// Код обработчика исключения здесь.
}
finally
{
// Код, выполняемый после try (и возможно catch)
}
Работа со строками
Представление строк
Строка C# представляет собой группу одного или нескольких знаков, объявленных с помощью ключевого слова string.
Каждый знак запоминается в кодировке unicod (16 бит, 2 байта).
В отличие от массивов знаков в C или C++, строки в C# гораздо проще в использовании и менее подвержены ошибкам программирования.
Строковый литерал объявляется с помощью двойных кавычек, как показано в следующем примере.
string Приветствие = "Hello, World!";
В классе Stringопределены методы для обработки строк. Функциональное назначение методов:
Создание и удаление строк.
Копирование и объединение.
Длина и позиционирование.
Представление строки.
Преобразования строки в иной тип.
Преобразования иного типа в строку.
Сравнение строк.
Метод ToString()
Все встроенные типы данных C# предоставляют метод ToString(), преобразующий значение в строку. Этот метод может быть использован для преобразования числовых значений в строки.
Пример. Создается строка Сообщение путем конкатенации (объединения) задаваемой строки и преобразованного в строку значения целочисленной переменной Год.
int Год = 1999;
string Сообщение = "Я родился в " + Год.ToString();
Доступ к отдельным знакам
К отдельным знакам, содержащимся в строке str, можно получить доступ с помощью таких методов:
Вызов |
Действие |
Clone() |
Возвращает ссылку на экземпляр класса |
Copy(str) |
Копирование строки str |
Concat(strA, strB) |
Сцепление строки strA со строкой strB |
Compare(strA, indA, StrB, indB) |
Сравнивает подстроки строк strA strB в позициях indA и indB |
str. Substring(E,L) |
Выделяет, начиная с позиции E (нумерация от 0), подстроку длиной L, |
strA.CompareTo(strB) |
Сравнивает строку strA со строкой strB |
strA.Replace(strA, strB) |
Заменяет строку strA на строку strB |
str.Remove(Ind, Count) |
Удаляет Count знаков после позиции Ind |
strA.Insert(Ind, strB) |
Вставляет строку strB в строку strA с позиции ind |
Equals(strA, strB) |
Проверка совпадения строк strA и strB |
ToCharArray(str) |
Возвращает массив символов строки str |
str.Split(‘R’) |
Возвращает массив строк из подстрок, разделенных символом R. |
str.Trim() |
Удаляет символы пробела в начале и конце строки. |
str.GetHashCode() |
Возвращает хэш-код для этой строки |
str.Length |
Возвращает число знаков в str |
str.ToLower() |
Копия str в нижнем регистре |
str.ToUpper() |
Копия str в верхнем регистре |
Подстрокой является последовательность символов, содержащихся в строке.
Метод Substring используется для создания новой строки на основании части исходной строки. Синтаксис метода:
СтрокаИсходник.Substring(Начало, Длина));
Метод Replace используется для замены всех вхождений заданной подстроки новой строкой. Синтаксис метода:
СтрокаИсходник.Replace(СтрокаЗаменяемая, ПодстрокаЗамещающая);
Одно или несколько вхождений подстроки можно найти с использованием метода IndexOf. Он возвращает номера позиций, с которых начинаются обнаруженные вхождения. Синтаксис метода:
СтрокаИсходник. IndexOf(ПодстрокаПоиска);
Пример.
using System;
string s3 = "Visual C# Express"; // Исходная строка
Console.WriteLine(s3.Substring(7, 2)); // Подстрока "C#"
Console.WriteLine(s3.Replace("C#", "Basic")); // Замена "Visual Basic Express"
int index = s3.IndexOf("C"); // index = 7