Yurijnd.com
Четверг, 06.02.2025, 21:19
Меню сайта

Вход на сайт

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

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

    Visual Studio 2012
     

     

    Строка является объектом типа String, значением которого является текст. По сути, текст хранится в виде последовательной доступной только для чтения коллекции объектов Char. В конце строки на языке C# отсутствует символ, заканчивающийся на NULL; поэтому строка C# может содержать любое число внедренных символов NULL ("\0"). Свойство Length строки представляет число объектов Char, содержащихся в этой строке, а не число символов Юникода. Для доступа к отдельным точкам в строке кода Юникода используется объект StringInfo object.

    string илиSystem.String

     

    В C# ключевое слово string является псевдонимом свойства String. Поэтому String и string эквивалентны, и пользователи могут использовать любое наиболее предпочтительное для них соглашение по наименованию. Класс String предоставляет множество методов для безопасного создания, обработки и сравнения строк. Кроме того, язык C# перегружает некоторые операторы для упрощения наиболее употребительных операций со строками. Дополнительные сведения о ключевом слове см. в разделе string (Справочник по C#). Дополнительные сведения о типе и его методах см. в разделе String.

    Объявление и инициализация строк

     

    Объявление и инициализацию строк можно выполнять различными способами, как показано в следующем примере:

     
    // Declare without initializing.
    string message1;
    
    // Initialize to null.
    string message2 = null;
    
    // Initialize as an empty string.
    // Use the Empty constant instead of the literal "".
    string message3 = System.String.Empty;
    
    //Initialize with a regular string literal.
    string oldPath = "c:\\Program Files\\Microsoft Visual Studio 8.0";
    
    // Initialize with a verbatim string literal.
    string newPath = @"c:\Program Files\Microsoft Visual Studio 9.0";
    
    // Use System.String if you prefer.
    System.String greeting = "Hello World!";
    
    // In local variables (i.e. within a method body)
    // you can use implicit typing.
    var temp = "I'm still a strongly-typed System.String!";
    
    // Use a const string to prevent 'message4' from
    // being used to store another string value.
    const string message4 = "You can't get rid of me!";
    
    // Use the String constructor only when creating
    // a string from a char*, char[], or sbyte*. See
    // System.String documentation for details.
    char[] letters = { 'A', 'B', 'C' };
    string alphabet = new string(letters);
    
    
    

    Обратите внимание, что для создания строкового объекта оператор new не используется, за исключением случаев инициализации строки массивом символов.

    Инициализация строки значением константы Empty приводит к созданию нового объекта String, строка которого имеет нулевую длину. Строковый литерал нулевой длины представляется как "". При инициализации строк значением Empty вместо nullснижается вероятности возникновения NullReferenceException. Используйте статический метод IsNullOrEmpty(String), чтобы проверить значение строки перед попыткой обращения к ней.

    Неизменность строковых объектов

     

    Строковые объекты являются неизменяемыми: после создания их нельзя изменить. Все методы String и операторы C#, которые, как можно было бы представить, изменяют строку, в действительности возвращают результаты в новый строковый объект. В следующем примере, когда содержимое строк s1 и s2 объединяется в одну строку, две исходные строки не изменяются.Оператор += создает новую строку с объединенным содержимым. Этот новый объект присваивается переменной s1, а исходный объект, который был присвоен строке s1, освобождается для сборки мусора, поскольку ни одна переменная не содержит ссылку на него.

     
    string s1 = "A string is more ";
    string s2 = "than the sum of its chars.";
    
    // Concatenate s1 and s2. This actually creates a new
    // string object and stores it in s1, releasing the
    // reference to the original object.
    s1 += s2;
    
    System.Console.WriteLine(s1);
    // Output: A string is more than the sum of its chars.
    
    
    

    Поскольку "изменением" строки в действительности является созданием новой строки, необходима предосторожность при создании ссылок на строки. Если создать ссылку на строку, а затем "изменить" исходную строку, то ссылка будет по-прежнему указывать на исходный объект, а не на новый объект, который был создан при изменении строки. Это поведение демонстрируется в следующем коде.

     
    string s1 = "Hello ";
    string s2 = s1;
    s1 += "World";
    
    System.Console.WriteLine(s2);
    //Output: Hello
    
    
    

    Дополнительные сведения о том, как создавать новые строки, основанные на таких изменениях как операции поиска и замены исходной строки, см. в разделе Практическое руководство. Изменение содержимого строки (Руководство по программированию в C#).

    Следующая страница

    Copyright MyCorp © 2025
    Сделать бесплатный сайт с uCoz