Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс_ред1 С#.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.8 Mб
Скачать

Копирование и клонирование строк

Если вам нужно создать копию текстовой строки, то это можно сделать при помощи обыкновенной операции присваивания. В этом случае в памяти будет находиться два одинаковых объекта.

Например, ниже мы объявили текстовые строки 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();

}

}

}