
- •Язык c# и структура простой программы
- •Что такое .Net Framework
- •Что такое с#
- •Создание первой программы на с#
- •Пространство имен System
- •С# как язык Объектно-Ориентированного Программирования (ооп)
- •Состав и назначение файлов проекта
- •Структура сборки
- •Элементы языка c#
- •Базовый синтаксис с#
- •Переменные
- •Числа без знака
- •Числа со знаком
- •Числа для финансистов
- •Текстовые символы
- •Логический тип данных
- •Литералы с плавающей точкой
- •Символьные литералы
- •Строковые литералы
- •Выражения и операторы с#
- •Инициализация переменных и оператор присваивания
- •Значение в левой части
- •Ввод данных с консоли
- •Математические операторы
- •Вычисление остатка при целочисленном делении
- •Унарные операторы
- •Унарное логическое отрицание
- •Составные операторы
- •Поразрядные операторы
- •Поразрядное логическое и
- •Поразрядное логическое или
- •Поразрядное логическое исключающее или
- •Унарная поразрядная операция дополнения
- •Поразрядный сдвиг
- •Пример использования поразрядных операторов
- •Логические операторы
- •Операторы отношения
- •Приоритеты операторов
- •Исполнители алгоритмов
- •Исполнитель Чертежник
- •Исполнитель Робот
- •Компьютер как формальный исполнитель алгоритмов
- •Блок-схема
- •Псевдокод
- •Необходимые свойства алгоритма
- •Понятие о временной сложности алгоритма
- •Примеры
- •Правила для определения сложности
- •Тернарный условный оператор
- •Применение логических операций
- •Конструкция выбора
- •Примеры применения оператора выбора
- •Объединение меток case
- •Пропущенный break
- •Пример программы: Простые числа
- •Пример обработки одномерного массива чисел
- •Использование генератора случайных данных
- •Использование оператора foreach
- •Типы задач обработки одномерных числовых массивов
- •Поиск элемента в массиве
- •Многомерные массивы
- •Базовые операции со строками
- •Методы типа string
- •Копирование и клонирование строк
- •Конкатенация строк
- •Извлечение подстроки
- •Вставка подстроки
- •Замена символов и строк
- •Удаление символов из строки
- •Удаление незначащих пробелов
- •Преобразование к верхнему и нижнему регистру
- •Выравнивание по левому и правому краю поля
- •Объединение массива строк
- •Разбор строки
- •Сравнение строк
- •Форматирование текстовых строк
- •Функции
- •Описание и использование функций
- •Возвращаемые значения
- •Передача параметров
- •Выходные параметры
- •Область действия переменных
- •Область действия переменных и управляющие конструкции
- •Рекурсия
- •Параметры функции Main()
- •Перегрузка функций
- •Перечислимый тип
- •Определение перечислимых типов
- •Структуры
- •Описание структур
- •Использование структур в качестве параметров функций
- •Использование структур в качестве возвращаемых значений функций
- •Функции структур
- •Файлы и потоки
- •Основные классы ввода и вывода
- •Классы для работы с потоками
- •Классы для работы с потоками текстовых символов
- •Работа с текстовыми файлами
Копирование и клонирование строк
Если вам нужно создать копию текстовой строки, то это можно сделать при помощи обыкновенной операции присваивания. В этом случае в памяти будет находиться два одинаковых объекта.
Например, ниже мы объявили текстовые строки src и s1 , после чего скопировали первую строку во вторую:
string src= "Hello, World!";
string si = src;
Теперь у нас есть два различных объекта, содержащих одинаковые текстовые строки. Для копирования строк можно также воспользоваться методом Сору, определенным в классе String:
string s2 = String.Copy(src);
Результат будет такой же, как и при использовании оператора присваивания, — будет создан новый объект, содержащий исходную строку. В переменную s2 будет записана ссылка на этот объект.
Операция клонирования строк очень похожа на операцию копирования, однако она не приводит к созданию объекта-близнеца. Вместо этого создается еще одна ссылка на уже существующий объект:
string s3 = (string)src.Clone();
После выполнения этого кода в переменную s3 будет записана ссылка на строку src . Так как метод Clone возвращает данные типа object, нам здесь пришлось выполнить явное приведение типов.
Описанные выше операции копирования и клонирования демонстрируются в программе, исходный текст которой приведен ниже:
using System;
namespace StringCopy
{
class Program
{
static void Main(string[] args)
{
string src = "Hello, World!";
string si = src;
string s2 = String.Copy(src);
string s3 = (string)src.Clone();
Console.WriteLine("Исходная строка: {0}", src);
Console.WriteLine("Копия 1: {0}", si);
Console.WriteLine("Копия 2: {0}", s2);
Console.WriteLine("Клон: {0}", s2);
Console.ReadLine();
}
}
}
Результат ее работы не содержит ничего неожиданного:
Конкатенация строк
Иногда перед программистом встает задача конкатенации (объединения) текстовых строк. Эта операция выполняется следующим образом: вначале нужно объявить новую строку, а затем записать в нее объединяемые строки при помощи оператора + или метода String.Concat. Вот как оператор + объединяет строки s1 и s2:
string s1 = "Hello, ";
string s2 = "World!";
string result = si + s2;
В результате result будет содержать строку «Hello, World!».
string res2 = String.Concat(si, s2);
Заметим, что таким образом можно объединять произвольное количество текстовых строк. Другой способ объединения текстовых строк — применение метода String.Concat:
string res2 = String.Concat(si, s2);
Объединяемые строки передаются этому методу в качестве параметров. Метод String.Concat возвращает ссылку на новую строку, полученную в результате объединения исходных строк.
Существует несколько перегруженных методов String.Concat, позволяющих объединять до четырех текстовых строк:
string res3 = String.Concat(s1, s2, s3, s4);
Кроме того, метод String.Concat в состоянии объединить все строки, хранящиеся в массиве:
string[] array =
{
"Это ", "массив ", "строк"
};
string res4 = String.Concat(array);
После выполнения этого фрагмента кода в переменной res4 будет находиться строка «Это массив строк».
Все описанные выше способы объединения текстовых строк демонстрируются в приведенной ниже программе:
using System;
namespace StringConcat
{
class Program
{
static void Main(string[] args)
{
string s1 = "Hello, ";
string s2 = "World! ";
string resl = s1 + s2;
string res2 = String.Concat(s1, s2);
string res3 = String.Concat(s1, s2, resl, res2);
string[] array =
{
"Это ", "массив ", "строк"
};
string res4 = String.Concat(array);
Console.WriteLine("Результат 1: {0}", resl);
Console.WriteLine("Результат 2: {0}", res2);
Console.WriteLine("Результат 3: {0}", res3);
Console.WriteLine("Результат 4: {0}", res4);
Console.ReadLine();
}
}
}