Поделиться через


string (Справочник по C#)

Тип string представляет последовательность из нуля или более символов в кодировке Юникод. Тип string — это псевдоним для типа String платформы .NET Framework.

Несмотря на то, что тип string является ссылочным типом, операторы равенства (== и !=) определены для сравнения значений объектов типа string, а не ссылок. Это упрощает проверку равенства строк. Примеры.

string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);

В этом примере отображается "True", а затем "False", поскольку содержимое строк одинаково, но a и b не ссылаются на один и тот же экземпляр строки.

Оператор + служит для объединения строк.

string a = "good " + "morning";

В данном примере создается строковый объект, содержащий текст "good morning".

Строки являются неизменяемыми: содержимое строкового объекта невозможно изменить после создания объекта, хотя из-за синтаксиса изменения кажутся возможными. Например, при написании этого кода компилятор на самом деле создает новый строковый объект для новой последовательности знаков, и этот новый объект получает значение "b". Затем строку "h" можно применять для сборки мусора.

string b = "h";
b += "ello";

Оператор [] служит для доступа только для чтения к отдельным знакам объекта string.

string str = "test";
char x = str[2];  // x = 's';

Строковые литералы имеют тип string и могут быть написаны в двух формах: в кавычках и в кавычках с @. Строковые литералы в кавычках заключены в двойные кавычки (").

"good morning"  // a string literal

Строковые литералы могут содержать любые символьные литералы. Escape-последовательности также поддерживаются. В следующем примере используется escape-последовательность \\ для обратной косой черты, \u0066 для буквы "f" и \n для перехода на новую строку.

string a = "\\\u0066\n";
Console.WriteLine(a);

Примечание

Escape-код \udddd (где dddd — четырехзначное число) представляет знак Юникода U+dddd.Также распознаются восьмизначные escape-коды Юникода: \Udddddddd.

Литералы из точных сток начинаются со знака @ и заключены в двойные кавычки. Примеры.

@"good morning"  // a string literal

Преимущество точных сток заключается в том, что escape-последовательности не обрабатывается, благодаря чему можно удобно написать, например, полное имя и путь файла:

@"c:\Docs\Source\a.txt"  // rather than "c:\\Docs\\Source\\a.txt"

Чтобы включить знак двойной кавычки в строку в кавычках с @, следует использовать знак кавычек дважды:

@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.

Знак @ также можно применять для использования указанных идентификаторов (/reference), являющихся ключевыми словами C#.

Дополнительные сведения о строках в C# см. в разделе Строки (Руководство по программированию на C#).

Пример

class SimpleStringTest 
{
   static void Main()
   {
      string a = "\u0068ello ";
      string b = "world";
      Console.WriteLine( a + b );
      Console.WriteLine( a + b == "Hello World" ); // == performs a case-sensitive comparison
   }
}
/* Output:
    hello world
    False
 */

Спецификация языка C#

Дополнительные сведения см в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

См. также

Ссылки

Ключевые слова C#

Ссылочные типы (Справочник по C#)

Типы значений (Справочник по C#)

Основные понятия

Руководство по программированию на C#

Рекомендации по использованию строк в .NET Framework

Руководство по программированию на C#

Создание новых строк

Другие ресурсы

Справочник по C#

Основные операции со строками

Таблица форматирования числовых результатов (Справочник по C#)