String Конструкторы

Определение

Инициализирует новый экземпляр класса String.Initializes a new instance of the String class.

Перегрузки

String(Char*)

Инициализирует новый экземпляр класса String значением, определенным указателем на массив знаков Юникода.Initializes a new instance of the String class to the value indicated by a specified pointer to an array of Unicode characters.

String(Char[])

Инициализирует новый экземпляр класса String символами Юникода, заданными в виде массива символов.Initializes a new instance of the String class to the Unicode characters indicated in the specified character array.

String(ReadOnlySpan<Char>)

Инициализирует новый экземпляр класса String символами Юникода, заданными в виде доступного только для чтения диапазона.Initializes a new instance of the String class to the Unicode characters indicated in the specified read-only span.

String(SByte*)

Инициализирует новый экземпляр класса String значением, определенным указателем на массив 8-разрядных целых чисел со знаком.Initializes a new instance of the String class to the value indicated by a pointer to an array of 8-bit signed integers.

String(Char, Int32)

Инициализирует новый экземпляр класса String значением, полученным путем повторения заданного знака Юникода указанное число раз.Initializes a new instance of the String class to the value indicated by a specified Unicode character repeated a specified number of times.

String(Char*, Int32, Int32)

Инициализирует новый экземпляр класса String значением, которое определяется заданным указателем на массив знаков Юникода, начальной позицией знака в этом массиве и длиной.Initializes a new instance of the String class to the value indicated by a specified pointer to an array of Unicode characters, a starting character position within that array, and a length.

String(Char[], Int32, Int32)

Инициализирует новый экземпляр класса String значением, заданным массивом знаков Юникода, начальной позицией знака в пределах данного массива и длиной.Initializes a new instance of the String class to the value indicated by an array of Unicode characters, a starting character position within that array, and a length.

String(SByte*, Int32, Int32)

Инициализирует новый экземпляр класса String значением, определяемым заданным указателем на массив 8-разрядных целых чисел со знаком, начальной позицией в пределах массива и длиной.Initializes a new instance of the String class to the value indicated by a specified pointer to an array of 8-bit signed integers, a starting position within that array, and a length.

String(SByte*, Int32, Int32, Encoding)

Инициализирует новый экземпляр класса String значением, определенным заданным указателем на массив 8-разрядных целых чисел со знаком, начальной позицией в пределах этого массива, длиной и объектом Encoding.Initializes a new instance of the String class to the value indicated by a specified pointer to an array of 8-bit signed integers, a starting position within that array, a length, and an Encoding object.

Комментарии

СодержаниеIn this section:

Синтаксис перегруженного конструктора Overloaded constructor syntax
Параметры Parameters
Исключения Exceptions
Какой метод следует вызывать? Which method do I call?
Создание строк Creating strings
Обработка повторяющихся строк Handling repetitive strings
Примеры создания экземпляров строк:Examples of instantiating strings:
Использование присваивания строкUsing string assignment
Использование массива символовUsing a character array
Использование части массива символов и повторение одного символаUsing a portion of a character array and repeating a single character
Использование указателя на массив символовUsing a pointer to a character array
Использование указателя и диапазона массиваUsing a pointer and a range of an array
Использование указателя на массив байтов со знакомUsing a pointer to a signed byte array
Сведения о версииVersion information

Синтаксис перегруженного конструктораOverloaded constructor syntax

Конструкторы строк делятся на две категории: без параметров указателя и с параметрами указателя.String constructors fall into two categories: those without pointer parameters, and those with pointer parameters. Конструкторы, использующие указатели, не являются CLS-совместимыми.The constructors that use pointers are not CLS-compliant. Кроме того, Visual Basic не поддерживает использование указателей и C# требует кода, который использует указатели для выполнения в ненадежном контексте.In addition, Visual Basic does not support the use of pointers, and C# requires code that uses pointers to run in an unsafe context. Дополнительные сведения см. в разделе unsafe.For more information, see unsafe.

Дополнительные рекомендации по выбору перегрузки см. в разделе метод, который я вызываю?For additional guidance on choosing an overload, see Which method do I call?

String(Char[] value)
Инициализирует новый экземпляр значением, указанным в массиве символов Юникода.Initializes the new instance to the value indicated by an array of Unicode characters. Этот конструктор копирует символы Юникода (Пример).This constructor copies Unicode characters(example).

String(Char[] value, Int32 startIndex, Int32 length)
Инициализирует новый экземпляр значением, указанным в массиве символов Юникода, начальной позицией символа в этом массиве и длиной (Пример).Initializes the new instance to the value indicated by an array of Unicode characters, a starting character position within that array, and a length (example).

String(Char c, Int32 count)
Инициализирует новый экземпляр со значением, указанным в указанном символе Юникода, повторяемым указанное число раз (например,).Initializes the new instance to the value indicated by a specified Unicode character repeated a specified number of times (example).

String(char* value)
(Не совместимо с CLS) Инициализирует новый экземпляр значением, указанным указателем на массив символов Юникода, заканчивающийся нулевым символом (U + 0000 или ' \ 0 ').(Not CLS-compliant) Initializes the new instance to the value indicated by a pointer to an array of Unicode characters that is terminated by a null character (U+0000 or '\0'). (Пример).(example).

Разрешение: SecurityCriticalAttribute требует полного доверия для немедленного вызывающего.Permission: SecurityCriticalAttribute, requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

String(char* value, Int32 startIndex, Int32 length)
(Не совместимо с CLS) Инициализирует новый экземпляр значением, указанным указателем на массив символов Юникода, начальной позицией символа в этом массиве и длиной.(Not CLS-compliant) Initializes the new instance to the value indicated by a pointer to an array of Unicode characters, a starting character position within that array, and a length. Конструктор копирует символы Юникода из value, начиная с индекса startIndex и заканчивая индексом startIndex + length-1 (Пример).The constructor copies the Unicode characters from value starting at index startIndex and ending at index startIndex + length - 1 (example).

Разрешение: SecurityCriticalAttribute требует полного доверия для немедленного вызывающего.Permission: SecurityCriticalAttribute, requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

String(SByte* value)
(Не совместимо с CLS) Инициализирует новый экземпляр значением, указанным указателем на массив 8-разрядных целых чисел со знаком.(Not CLS-compliant) Initializes the new instance to the value indicated by a pointer to an array of 8-bit signed integers. Предполагается, что массив представляет собой строку, закодированную с помощью текущей системной кодовой страницы (то есть кодировка, заданная Encoding.Default).The array is assumed to represent a string encoded using the current system code page (that is, the encoding specified by Encoding.Default). Конструктор обрабатывает символы из value начиная с расположения, заданного указателем, до тех пор, пока не будет достигнут символ null (например,).The constructor processes characters from value starting from the location specified by the pointer until a null character (0x00) is reached (example).

Разрешение: SecurityCriticalAttribute требует полного доверия для немедленного вызывающего.Permission: SecurityCriticalAttribute, requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

String(SByte* value, Int32 startIndex, Int32 length)
(Не совместимо с CLS) Инициализирует новый экземпляр значением, указанным указателем на массив 8-разрядных целых чисел со знаком, начальную точку в этом массиве и длину.(Not CLS-compliant) Initializes the new instance to the value indicated by a pointer to an array of 8-bit signed integers, a starting position within that array, and a length. Предполагается, что массив представляет собой строку, закодированную с помощью текущей системной кодовой страницы (то есть кодировка, заданная Encoding.Default).The array is assumed to represent a string encoded using the current system code page (that is, the encoding specified by Encoding.Default). Конструктор обрабатывает символы из значения, начиная с startIndex и заканчивая startIndex + length-1 (Пример).The constructor processes characters from value starting at startIndex and ending at startIndex + length - 1 (example).

Разрешение: SecurityCriticalAttribute требует полного доверия для немедленного вызывающего.Permission: SecurityCriticalAttribute, requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

String(SByte* value, Int32 startIndex, Int32 length, Encoding enc)
(Не совместимо с CLS) Инициализирует новый экземпляр значением, указанным указателем на массив 8-разрядных целых чисел со знаком, начальную точку в пределах этого массива, длину и объект Encoding.(Not CLS-compliant) Initializes the new instance to the value indicated by a pointer to an array of 8-bit signed integers, a starting position within that array, a length, and an Encoding object.

Разрешение: SecurityCriticalAttribute требует полного доверия для немедленного вызывающего.Permission: SecurityCriticalAttribute, requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

ПараметрыParameters

Ниже приведен полный список параметров, используемых конструкторами String, не включающими параметр указателя.Here is a complete list of parameters used by String constructors that don't include a pointer parameter. Параметры, используемые каждой перегрузкой, см. в описании приведенного выше синтаксиса перегрузки.For the parameters used by each overload, see the overload syntax above.

ПараметрParameter ТипType ОписаниеDescription
value Char[]Char[] Массив знаков Юникода.An array of Unicode characters.
c Char Знак Юникода.A Unicode character.
startIndex Int32 Начальная позиции в value первого символа в новой строке.The starting position in value of the first character in the new string.

Значение по умолчанию: 0Default value: 0
length Int32 Число символов в value для включения в новую строку.The number of characters in value to include in the new string.

Значение по умолчанию: Array.LengthDefault value: Array.Length
count Int32 Количество раз, когда символ c повторяется в новой строке.The number of times the character c is repeated in the new string. Если count равно нулю, значение нового объекта равно String.Empty.If count is zero, the value of the new object is String.Empty.

Ниже приведен полный список параметров, используемых конструкторами String, которые включают параметр указателя.Here is a complete list of parameters used by String constructors that include a pointer parameter. Параметры, используемые каждой перегрузкой, см. в описании приведенного выше синтаксиса перегрузки.For the parameters used by each overload, see the overload syntax above.

ПараметрParameter ТипType ОписаниеDescription
value Char*

- или --or-

SByte*
Указатель на массив символов Юникода, заканчивающийся нулем, или массив 8-разрядных целых чисел со знаком.A pointer to a null-terminated array of Unicode characters or an array of 8-bit signed integers. Если value имеет null или пустой массив, значение новой строки равно String.Empty.If value is null or an empty array, the value of the new string is String.Empty.
startIndex Int32 Индекс элемента массива, который определяет первый символ в новой строке.The index of the array element that defines the first character in the new string.

Значение по умолчанию: 0Default value: 0
length Int32 Число элементов массива, используемых для создания новой строки.The number of array elements to use to create the new string. Если значение length равно нулю, конструктор создает строку со значением String.Empty.If length is zero, the constructor creates a string whose value is String.Empty.

Значение по умолчанию: Array.LengthDefault value: Array.Length
enc Encoding Объект, указывающий, как кодируется массив value.An object that specifies how the value array is encoded.

Значение по умолчанию: Encoding.Default или Текущая кодовая страница ANSI системыDefault value: Encoding.Default, or the system's current ANSI code page

ИсключенияExceptions

Ниже приведен список исключений, создаваемых конструкторами, которые не включают параметры указателя.Here's a list of exceptions thrown by constructors that don't include pointer parameters.

ИсключениеException УсловиеCondition Кем созданоThrown by
ArgumentNullException Свойство value имеет значение null.value is null. String(Char[], Int32, Int32)
ArgumentOutOfRangeException startIndex, length или count меньше нуля.startIndex,length, or count is less than zero.

- или --or-

Сумма startIndex и length больше, чем число элементов в value.The sum of startIndex and length is greater than the number of elements in value.

- или --or-

Значение параметра count меньше нуля.count is less than zero.
String(Char, Int32)

String(Char[], Int32, Int32)

Ниже приведен список исключений, создаваемых конструкторами, которые включают в себя параметры-указатели.Here's a list of exceptions thrown by constructors that include pointer parameters.

ИсключениеException УсловиеCondition Кем созданоThrown by
ArgumentException value указывает массив, содержащий недопустимый символ Юникода.value specifies an array that contains an invalid Unicode character.

- или --or-

value или value + startIndex указывает адрес, размер которого меньше 64 КБ.value or value + startIndex specifies an address that is less than 64K.

- или --or-

Не удалось инициализировать новый экземпляр String из массива байтов value, так как value не использует кодировку кодовой страницы по умолчанию.A new String instance could not be initialized from the value byte array because value does not use the default code page encoding.
Все конструкторы с указателями.All constructors with pointers.
ArgumentNullException Параметр value имеет значение null.value is null. String(SByte*)

String(SByte*, Int32, Int32)

String(SByte*, Int32, Int32, Encoding)
ArgumentOutOfRangeException Текущий процесс не имеет доступа на чтение ко всем рассматриваемым символам.The current process does not have read access to all the addressed characters.

- или --or-

startIndex или length меньше нуля, value + startIndex приводит к переполнению указателя, или текущий процесс не имеет доступа на чтение ко всем адресуемым символам.startIndex or length is less than zero, value + startIndex cause a pointer overflow, or the current process does not have read access to all the addressed characters.

- или --or-

Длина новой строки слишком велика для выделения.The length of the new string is too large to allocate.
Все конструкторы с указателями.All constructors with pointers.
AccessViolationException valueили value + startIndex + length-1, указывает недопустимый адрес.value, or value + startIndex + length - 1, specifies an invalid address. String(SByte*)

String(SByte*, Int32, Int32)

String(SByte*, Int32, Int32, Encoding)

Какой метод следует вызывать?Which method do I call?

КомуTo Вызов или использованиеCall or use
Создайте строку.Create a string. Присваивание из строкового литерала или существующей строки (Пример)Assignment from a string literal or an existing string (example)
Создать строку из целого массива символов.Create a string from an entire character array. String(Char[]) (Пример)String(Char[]) (example)
Создать строку из части массива символов.Create a string from a portion of a character array. String(Char[], Int32, Int32) (Пример)String(Char[], Int32, Int32) (example)
Создайте строку, которая повторяет один и тот же символ несколько раз.Create a string that repeats the same character multiple times. String(Char, Int32) (Пример)String(Char, Int32) (example)
Создать строку из указателя на массив символов в Юникоде или расширенную кодировку.Create a string from a pointer to a Unicode or wide character array. String(Char*)
Создание строки из части массива символов Юникода или расширенного символа с помощью указателя.Create a string from a portion of a Unicode or wide character array by using its pointer. String(Char*, Int32, Int32)
Создайте строку из массива C++ char.Create a string from a C++ char array. String(SByte*), String(SByte*, Int32, Int32)String(SByte*), String(SByte*, Int32, Int32)

- или --or-

String(SByte*, Int32, Int32, Encoding)
Создайте строку из символов ASCII.Create a string from ASCII characters. ASCIIEncoding.GetString

Создание строкCreating strings

Наиболее часто используемый способ создания строк программным способом — это простое присваивание, как показано в этом примере.The most commonly used technique for creating strings programmatically is simple assignment, as illustrated in this example. Класс String также включает четыре типа перегрузок конструктора, которые позволяют создавать строки из следующих значений:The String class also includes four types of constructor overloads that let you create strings from the following values:

  • Из массива символов (массива символов в кодировке UTF-16).From a character array (an array of UTF-16-encoded characters). Можно создать новый объект String на основе символов во всем массиве или в его части.You can create a new String object from the characters in the entire array or a portion of it. Конструктор String(Char[]) копирует все символы массива в новую строку.The String(Char[]) constructor copies all the characters in the array to the new string. Конструктор String(Char[], Int32, Int32) копирует символы из startIndex индекса в индекс startIndex + length-1 в новую строку.The String(Char[], Int32, Int32) constructor copies the characters from index startIndex to index startIndex + length - 1 to the new string. Если length равно нулю, значение новой строки равно String.Empty.If length is zero, the value of the new string is String.Empty.

    Если код многократно создает строки с одинаковым значением, можно повысить производительность приложения с помощью альтернативного способа создания строк.If your code repeatedly instantiates strings that have the same value, you can improve application performance by using an alternate means of creating strings. Дополнительные сведения см. в разделе Обработка повторяющихся строк.For more information, see Handling repetitive strings.

  • Из одного символа, дублирующего ноль, один или более раз с помощью конструктора String(Char, Int32).From a single character that is duplicated zero, one, or more times, by using the String(Char, Int32) constructor. Если count равно нулю, значение новой строки равно String.Empty.If count is zero, the value of the new string is String.Empty.

  • Из указателя на массив символов, заканчивающийся нулем, с помощью конструктора String(Char*) или String(Char*, Int32, Int32).From a pointer to a null-terminated character array, by using the String(Char*) or String(Char*, Int32, Int32) constructor. Для инициализации строки можно использовать либо весь массив, либо указанный диапазон.Either the entire array or a specified range can be used to initialize the string. Конструктор копирует последовательность символов Юникода, начиная с указанного указателя или из указанного указателя плюс startIndex и продолжая до конца массива или для length символов.The constructor copies a sequence of Unicode characters starting from the specified pointer or from the specified pointer plus startIndex and continuing to the end of the array or for length characters. Если value является пустым указателем или length равен нулю, конструктор создает строку, значение которой равно String.Empty.If value is a null pointer or length is zero, the constructor creates a string whose value is String.Empty. Если операция копирования продолжается до конца массива, а массив не завершается нулем, поведение конструктора зависит от системы.If the copy operation proceeds to the end of the array and the array is not null-terminated, the constructor behavior is system-dependent. Такое условие может вызвать нарушение прав доступа.Such a condition might cause an access violation.

    Если массив содержит любые внедренные символы NULL (U + 0000 или ' \ 0 ') и вызывается перегрузка String(Char*, Int32, Int32), экземпляр строки содержит length символов, включая любые внедренные значения NULL.If the array contains any embedded null characters (U+0000 or '\0') and the String(Char*, Int32, Int32) overload is called, the string instance contains length characters including any embedded nulls. В следующем примере показано, что происходит, когда указатель на массив из 10 элементов, включающий в себя два символа null, передается в метод String(Char*, Int32, Int32).The following example shows what happens when a pointer to an array of 10 elements that includes two null characters is passed to the String(Char*, Int32, Int32) method. Поскольку адрес — это начало массива, и все элементы массива должны быть добавлены в строку, конструктор создает экземпляр строки с десятью символами, включая два встроенных значения NULL.Because the address is the beginning of the array and all elements in the array are to be added to the string, the constructor instantiates a string with ten characters, including two embedded nulls. С другой стороны, если один и тот же массив передается конструктору String(Char*), результатом является строка из четырех символов, которая не включает первый символ null.On the other hand, if the same array is passed to the String(Char*) constructor, the result is a four-character string that does not include the first null character.

    using namespace System;
    
    void main()
    {
       wchar_t chars[] = { L'a', L'b', L'c', L'd', L'\0', L'A', L'B', 
                           L'C', L'D', L'\0' };
       Char* chPtr = chars;
       String^ s = gcnew String(chPtr, 0, 
                                sizeof(chars) / sizeof (wchar_t));            
       for each (Char ch in s)
          Console::Write("{0:X4} ", Convert::ToUInt16(ch));
       Console::WriteLine();
       
       s = gcnew String(chPtr);         
       
       for each (Char ch in s)
          Console::Write("{0:X4} ", Convert::ToUInt16(ch));
       Console::WriteLine();    
    }
    // The example displays the following output:
    //       0061 0062 0063 0064 0000 0041 0042 0043 0044 0000
    //       0061 0062 0063 0064
    
    using System;
    
    public class Example
    {
       public unsafe static void Main()
       {
          char[] chars = { 'a', 'b', 'c', 'd', '\0', 'A', 'B', 'C', 'D', '\0' };
          string s = null;
          
          fixed(char* chPtr = chars) {
             s = new string(chPtr, 0, chars.Length);            
          } 
    
          foreach (var ch in s)
             Console.Write("{0:X4} ", Convert.ToUInt16(ch));
          Console.WriteLine();
          
          fixed(char* chPtr = chars) {
             s = new string(chPtr);         
          }
          
          foreach (var ch in s)
             Console.Write("{0:X4} ", Convert.ToUInt16(ch));
          Console.WriteLine();    
       }
    }
    // The example displays the following output:
    //       0061 0062 0063 0064 0000 0041 0042 0043 0044 0000
    //       0061 0062 0063 0064
    

    Массив должен содержать символы Юникода.The array must contain Unicode characters. В C++это означает, что массив символов должен быть определен как управляемый типChar[] или неуправляемый типwchar_t[].In C++, this means that the character array must be defined either as the managed Char[] type or the unmanagedwchar_t[] type.

    Если вызывается перегрузка String(Char*) и массив не завершается нулем или если вызвана перегрузка String(Char*, Int32, Int32) и startIndex + length-1 включает диапазон, который находится за пределами памяти, выделенной для последовательности символов поведение конструктора зависит от системы, и может возникнуть нарушение прав доступа.If the String(Char*) overload is called and the array is not null-terminated, or if the String(Char*, Int32, Int32) overload is called and startIndex + length-1 includes a range that it outside the memory allocated for the sequence of characters, the behavior of the constructor is system-dependent, and an access violation may occur. Кроме того, на процессоре Intel Itanium вызовы конструктора String(Char*, Int32, Int32) могут вызвать исключение DataMisalignedException.In addition, on the Intel Itanium processor, calls to the String(Char*, Int32, Int32) constructor may throw a DataMisalignedException exception. Если это происходит, вызовите String(Char[], Int32, Int32).If this occurs, call the String(Char[], Int32, Int32) instead.

  • Из указателя на массив байтов со знаком.From a pointer to a signed byte array. Для инициализации строки можно использовать либо весь массив, либо указанный диапазон.Either the entire array or a specified range can be used to initialize the string. Последовательность байтов может интерпретироваться с помощью кодировки кодовой страницы по умолчанию, или в вызове конструктора можно указать кодировку.The sequence of bytes can be interpreted by using the default code page encoding, or an encoding can be specified in the constructor call. Если конструктор пытается создать экземпляр строки из целого массива, не заканчивающегося нулем, или диапазон массива value + startIndex value + startIndex + length-1 находится за пределами памяти При выделении для массива поведение этого конструктора зависит от системы, и может возникнуть нарушение прав доступа.If the constructor tries to instantiate a string from an entire array that is not null-terminated, or if the range of the array from value + startIndex to value + startIndex + length -1 is outside of the memory allocated for the array, the behavior of this constructor is system-dependent, and an access violation may occur.

    Три конструктора, включающие массив байтов со знаком в качестве параметра, предназначены в первую очередь для преобразования C++ массива char в строку, как показано в следующем примере:The three constructors that include a signed byte array as a parameter are designed primarily to convert a C++ char array to a string, as shown in this example:

    using namespace System;
    
    void main()
    {
          char chars[] = { 'a', 'b', 'c', 'd', '\x00' };
          
          char* charPtr = chars;
          String^ value = gcnew String(charPtr);
    
          Console::WriteLine(value);
    }
    // The example displays the following output:
    //      abcd
    

    Если массив содержит любые символы NULL ("\ 0") или байты, значение которых равно 0 и вызывается перегрузка String(SByte*, Int32, Int32), экземпляр строки содержит length символов, включая любые внедренные значения NULL.If the array contains any null characters ('\0') or bytes whose value is 0 and the String(SByte*, Int32, Int32) overload is called, the string instance contains length characters including any embedded nulls. В следующем примере показано, что происходит, когда указатель на массив из 10 элементов, включающий в себя два символа null, передается в метод String(SByte*, Int32, Int32).The following example shows what happens when a pointer to an array of 10 elements that includes two null characters is passed to the String(SByte*, Int32, Int32) method. Поскольку адрес — это начало массива, и все элементы массива должны быть добавлены в строку, конструктор создает экземпляр строки с десятью символами, включая два встроенных значения NULL.Because the address is the beginning of the array and all elements in the array are to be added to the string, the constructor instantiates a string with ten characters, including two embedded nulls. С другой стороны, если один и тот же массив передается конструктору String(SByte*), результатом является строка из четырех символов, которая не включает первый символ null.On the other hand, if the same array is passed to the String(SByte*) constructor, the result is a four-character string that does not include the first null character.

    using namespace System;
    
    void main()
    {
       char bytes[] = { 0x61, 0x62, 0x063, 0x064, 0x00, 0x41, 0x42,0x43, 
                        0x44, 0x00 };
       
       char* bytePtr = bytes;
       String^ s = gcnew String(bytePtr, 0, sizeof(bytes) / sizeof (char));
       
       for each (Char ch in s)
          Console::Write("{0:X4} ", Convert::ToUInt16(ch));
       
       Console::WriteLine();
       
       s = gcnew String(bytePtr);
    
       for each (Char ch in s)
          Console::Write("{0:X4} ", Convert::ToUInt16(ch));
       Console::WriteLine();       
    }
    // The example displays the following output:
    //      0061 0062 0063 0064 0000 0041 0042 0043 0044 0000
    //      0061 0062 0063 0064
    
    using System;
    
    public class Example
    {
       public unsafe static void Main()
       {
          sbyte[] bytes = { 0x61, 0x62, 0x063, 0x064, 0x00, 0x41, 0x42,0x43, 0x44, 0x00 };
          
          string s = null;
          fixed (sbyte* bytePtr = bytes) {
             s = new string(bytePtr, 0, bytes.Length);
          }
          
          foreach (var ch in s)
             Console.Write("{0:X4} ", Convert.ToUInt16(ch));
          
          Console.WriteLine();    
    
          fixed(sbyte* bytePtr = bytes) {
             s = new string(bytePtr);         
          }
          
          foreach (var ch in s)
             Console.Write("{0:X4} ", Convert.ToUInt16(ch));
          Console.WriteLine();    
    
       }
    }
    // The example displays the following output:
    //       0061 0062 0063 0064 0000 0041 0042 0043 0044 0000
    //       0061 0062 0063 0064
    

    Поскольку конструкторы String(SByte*) и String(SByte*, Int32, Int32) обрабатывают value с помощью кодовой страницы ANSI по умолчанию, вызов этих конструкторов с одинаковыми массивами байтов может привести к созданию строк, имеющих разные значения в разных системах.Because the String(SByte*) and String(SByte*, Int32, Int32) constructors interpret value by using the default ANSI code page, calling these constructors with identical byte arrays may create strings that have different values on different systems.

Обработка повторяющихся строкHandling repetitive strings

Приложения, которые анализируют или декодируются потоки текста, часто используют конструктор String(Char[], Int32, Int32) или метод StringBuilder.Append(Char[], Int32, Int32) для преобразования последовательностей символов в строку.Apps that parse or decode streams of text often use the String(Char[], Int32, Int32) constructor or the StringBuilder.Append(Char[], Int32, Int32) method to convert sequences of characters into a string. Повторное создание новых строк с одинаковым значением вместо создания и повторного использования одной строки приводит к нерасходованию памяти.Repeatedly creating new strings with the same value instead of creating and reusing one string wastes memory. Если вы, вероятно, создадите одинаковое строковое значение повторно, вызвав конструктор String(Char[], Int32, Int32), даже если вы не понимаете, что такое идентичные строковые значения, можно использовать таблицу уточняющих запросов.If you are likely to create the same string value repeatedly by calling the String(Char[], Int32, Int32) constructor, even if you don't know in advance what those identical string values may be, you can use a lookup table instead.

Например, предположим, что вы читаете и анализируете поток символов из файла, содержащего XML-теги и атрибуты.For example, suppose you read and parse a stream of characters from a file that contains XML tags and attributes. При синтаксическом анализе потока происходит многократное возникновение определенных токенов (т. е. последовательностей символов, имеющих символьное значение).When you parse the stream, you repeatedly encounter certain tokens (that is, sequences of characters that have a symbolic meaning). Маркеры, эквивалентные строкам "0", "1", "true" и "false", скорее всего, часто встречаются в потоке XML.Tokens equivalent to the strings "0", "1", "true", and "false" are likely to occur frequently in an XML stream.

Вместо преобразования каждого токена в новую строку можно создать объект System.Xml.NameTable для хранения часто встречающихся строк.Instead of converting each token into a new string, you can create a System.Xml.NameTable object to hold commonly occurring strings. Объект NameTable повышает производительность, поскольку он извлекает сохраненные строки без выделения временной памяти.The NameTable object improves performance, because it retrieves stored strings without allocating temporary memory. При возникновении маркера используйте метод NameTable.Get(Char[], Int32, Int32) для получения маркера из таблицы.When you encounter a token, use the NameTable.Get(Char[], Int32, Int32) method to retrieve the token from the table. Если маркер существует, метод возвращает соответствующую строку.If the token exists, the method returns the corresponding string. Если маркер не существует, используйте метод NameTable.Add(Char[], Int32, Int32), чтобы вставить маркер в таблицу и получить соответствующую строку.If the token does not exist, use the NameTable.Add(Char[], Int32, Int32) method to insert the token into the table and to get the corresponding string.

Пример 1: Использование присваивания строкExample 1: Using string assignment

В следующем примере создается новая строка путем присвоения ей строкового литерала.The following example creates a new string by assigning it a string literal. Он создает вторую строку, присваивая ей значение первой строки.It creates a second string by assigning the value of the first string to it. Это два наиболее распространенных способа создания экземпляра нового объекта String.These are the two most common ways to instantiate a new String object.

using namespace System;

void main()
{
   String^ value1 = L"This is a string.";
   String^ value2 = value1;
   Console::WriteLine(value1);
   Console::WriteLine(value2);
}
// The example displays the following output:
//    This is a string.
//    This is a string.
using System;

public class Example
{
   public static void Main()
   {
      String value1 = "This is a string.";
      String value2 = value1;
      Console.WriteLine(value1);
      Console.WriteLine(value2);
   }
}
// The example displays the following output:
//    This is a string.
//    This is a string.
Module Example
   Public Sub Main()
      Dim value1 As String = "This is a string."
      Dim value2 As String = value1
      Console.WriteLine(value1)
      Console.WriteLine(value2)
   End Sub
End Module
' The example displays the following output:
'    This is a string.
'    This is a string.

Пример 2: Использование массива символовExample 2: Using a character array

В следующем примере показано, как создать новый объект String из массива символов.The following example demonstrates how to create a new String object from a character array.

// Unicode Mathematical operators
wchar_t charArray1[4] = {L'\x2200',L'\x2202',L'\x200F',L'\x2205'};
wchar_t * lptstr1 =  &charArray1[ 0 ];
String^ wszMathSymbols = gcnew String( lptstr1 );

// Unicode Letterlike Symbols
wchar_t charArray2[4] = {L'\x2111',L'\x2118',L'\x2122',L'\x2126'};
wchar_t * lptstr2 =  &charArray2[ 0 ];
String^ wszLetterLike = gcnew String( lptstr2 );

// Compare Strings - the result is false
Console::WriteLine( String::Concat( L"The Strings are equal? ", (0 == String::Compare( wszLetterLike, wszMathSymbols ) ? (String^)"TRUE" : "FALSE") ) );
// Unicode Mathematical operators
char [] charArr1 = {'\u2200','\u2202','\u200F','\u2205'};
String szMathSymbols = new String(charArr1);

// Unicode Letterlike Symbols
char [] charArr2 = {'\u2111','\u2118','\u2122','\u2126'};
String szLetterLike = new String (charArr2);

// Compare Strings - the result is false
Console.WriteLine("The Strings are equal? " +
    (String.Compare(szMathSymbols, szLetterLike)==0?"true":"false") );
' Unicode Mathematical operators
Dim charArr1() As Char = {ChrW(&H2200), ChrW(&H2202), _
                          ChrW(&H200F), ChrW(&H2205)}
Dim szMathSymbols As New String(charArr1)

' Unicode Letterlike Symbols
Dim charArr2() As Char = {ChrW(&H2111), ChrW(&H2118), _
                          ChrW(&H2122), ChrW(&H2126)}
Dim szLetterLike As New String(charArr2)

' Compare Strings - the result is false
Console.WriteLine("The strings are equal? " & _
        CStr(szMathSymbols.Equals(szLetterLike))) 

Пример 3. Использование части массива символов и повторение одного символаExample 3: Using a portion of a character array and repeating a single character

В следующем примере показано, как создать новый объект String на основе части массива символов и как создать новый объект String, содержащий несколько вхождений одного символа.The following example demonstrates how to create a new String object from a portion of a character array, and how to create a new String object that contains multiple occurrences of a single character.

// Create a Unicode String with 5 Greek Alpha characters
String^ szGreekAlpha = gcnew String( L'\x0391',5 );

// Create a Unicode String with a Greek Omega character
wchar_t charArray5[3] = {L'\x03A9',L'\x03A9',L'\x03A9'};
String^ szGreekOmega = gcnew String( charArray5,2,1 );
String^ szGreekLetters = String::Concat( szGreekOmega, szGreekAlpha, szGreekOmega->Clone() );

// Examine the result
Console::WriteLine( szGreekLetters );

// The first index of Alpha
int ialpha = szGreekLetters->IndexOf( L'\x0391' );

// The last index of Omega
int iomega = szGreekLetters->LastIndexOf( L'\x03A9' );
Console::WriteLine( String::Concat(  "The Greek letter Alpha first appears at index ", Convert::ToString( ialpha ) ) );
Console::WriteLine( String::Concat(  " and Omega last appears at index ", Convert::ToString( iomega ),  " in this String." ) );
// Create a Unicode String with 5 Greek Alpha characters
String szGreekAlpha = new String('\u0391',5);
// Create a Unicode String with a Greek Omega character
String szGreekOmega = new String(new char [] {'\u03A9','\u03A9','\u03A9'},2,1);

String szGreekLetters = String.Concat(szGreekOmega, szGreekAlpha, szGreekOmega.Clone());

// Examine the result
Console.WriteLine(szGreekLetters);

// The first index of Alpha
int ialpha = szGreekLetters.IndexOf('\u0391');
// The last index of Omega
int iomega = szGreekLetters.LastIndexOf('\u03A9');

Console.WriteLine("The Greek letter Alpha first appears at index " + ialpha +
    " and Omega last appears at index " + iomega + " in this String.");
' Create a Unicode String with 5 Greek Alpha characters
Dim szGreekAlpha As New String(ChrW(&H0391), 5)
' Create a Unicode String with a Greek Omega character
Dim szGreekOmega As New String(New Char() {ChrW(&H03A9), ChrW(&H03A9), _
                                           ChrW(&H03A9)}, 2, 1)

Dim szGreekLetters As String = String.Concat(szGreekOmega, szGreekAlpha, _
                                             szGreekOmega.Clone())

' Examine the result
Console.WriteLine(szGreekLetters)

' The first index of Alpha
Dim iAlpha As Integer = szGreekLetters.IndexOf(ChrW(&H0391))
' The last index of Omega
Dim iomega As Integer = szGreekLetters.LastIndexOf(ChrW(&H03A9))

Console.WriteLine("The Greek letter Alpha first appears at index {0}.", _ 
                  ialpha)
Console.WriteLIne("The Greek letter Omega last appears at index {0}.", _
                  iomega)

Пример 4. Использование указателя на массив символовExample 4: Using a pointer to a character array

В следующем примере показано, как создать новый объект String на основе указателя на массив символов.The following example demonstrates how to create a new String object from a pointer to an array of characters. C# Пример должен быть скомпилирован с помощью параметра компилятора /unsafe.The C# example must be compiled by using the /unsafe compiler switch.

using namespace System;

void main()
{
   wchar_t characters[] = {L'H',L'e',L'l',L'l',L'o',L' ', 
                           L'W',L'o',L'r',L'l',L'd',L'!',L'\x0000'};

   Char* charPtr = characters;
   String^ value = gcnew String(charPtr);
   Console::WriteLine(value);
}
// The example displays the following output:
//        Hello world!
using System;

public class Example
{
   public static unsafe void Main()
   {
      char[] characters = { 'H', 'e', 'l', 'l', 'o', ' ', 
                            'w', 'o', 'r', 'l', 'd', '!', '\u0000' };
      string value;
      
      fixed (char* charPtr = characters) {
         value = new String(charPtr);
      }                            
      Console.WriteLine(value);
   }
}
// The example displays the following output:
//        Hello world!

Пример 5. Создание экземпляра строки из указателя и диапазона массиваExample 5: Instantiating a string from a pointer and a range of an array

В следующем примере изучаются элементы массива символов для точки или восклицательного знака.The following example examines the elements of a character array for either a period or an exclamation point. Если он найден, то он создает экземпляр строки из символов в массиве, предшествующих символу пунктуации.If one is found, it instantiates a string from the characters in the array that precede the punctuation symbol. В противном случае она создает экземпляр строки со всем содержимым массива.If not, it instantiates a string with the entire contents of the array. C# Пример должен быть скомпилирован с помощью параметра компилятора /unsafe.The C# example must be compiled using the /unsafe compiler switch.

using namespace System;


void main()
{
   wchar_t characters[] = {L'H',L'e',L'l',L'l',L'o',L' ', 
                           L'W',L'o',L'r',L'l',L'd',L'!',L'\x0000'};

   Char* charPtr = characters;
   int length = 0;
   Char* iterator = charPtr;

   while (*iterator != '\x0000')
   {
      if (*iterator == L'!' || *iterator == L'.')
         break;
      *iterator++;
      length++;
   }
   String^ value = gcnew String(charPtr, 0, length);
   Console::WriteLine(value);
}
// The example displays the following output:
//      Hello World
using System;

public class Example
{
   public static unsafe void Main()
   {
      char[] characters = { 'H', 'e', 'l', 'l', 'o', ' ', 
                            'w', 'o', 'r', 'l', 'd', '!', '\u0000' };
      String value;
      
      fixed (char* charPtr = characters) {
         int length = 0;
         Char* iterator = charPtr;
   
         while (*iterator != '\x0000')
         {
            if (*iterator == '!' || *iterator == '.')
               break;
            iterator++;
            length++;
         }
         value = new String(charPtr, 0, length);
      }
      Console.WriteLine(value);
   }
}
// The example displays the following output:
//      Hello World

Пример 6. Создание экземпляра строки из указателя на массив байтов со знакомExample 6: Instantiating a string from a pointer to a signed byte array

В следующем примере показано, как можно создать экземпляр класса String с помощью конструктора String(SByte*).The following example demonstrates how you can create an instance of the String class with the String(SByte*) constructor.

// Null terminated ASCII characters in a simple char array
char charArray3[4] = {0x41,0x42,0x43,0x00};
char * pstr3 =  &charArray3[ 0 ];
String^ szAsciiUpper = gcnew String( pstr3 );
char charArray4[4] = {0x61,0x62,0x63,0x00};
char * pstr4 =  &charArray4[ 0 ];
String^ szAsciiLower = gcnew String( pstr4,0,sizeof(charArray4) );

// Prints "ABC abc"
Console::WriteLine( String::Concat( szAsciiUpper,  " ", szAsciiLower ) );

// Compare Strings - the result is true
Console::WriteLine( String::Concat(  "The Strings are equal when capitalized ? ", (0 == String::Compare( szAsciiUpper->ToUpper(), szAsciiLower->ToUpper() ) ? (String^)"TRUE" :  "FALSE") ) );

// This is the effective equivalent of another Compare method, which ignores case
Console::WriteLine( String::Concat(  "The Strings are equal when capitalized ? ", (0 == String::Compare( szAsciiUpper, szAsciiLower, true ) ? (String^)"TRUE" :  "FALSE") ) );
unsafe
{
    // Null terminated ASCII characters in an sbyte array
    String szAsciiUpper = null;
    sbyte[] sbArr1 = new sbyte[] { 0x41, 0x42, 0x43, 0x00 };
    // Instruct the Garbage Collector not to move the memory
    fixed(sbyte* pAsciiUpper = sbArr1)
    {
        szAsciiUpper = new String(pAsciiUpper);
    }
    String szAsciiLower = null;
    sbyte[] sbArr2 = { 0x61, 0x62, 0x63, 0x00 };
    // Instruct the Garbage Collector not to move the memory
    fixed(sbyte* pAsciiLower = sbArr2)
    {
        szAsciiLower = new String(pAsciiLower, 0, sbArr2.Length);
    }
    // Prints "ABC abc"
    Console.WriteLine(szAsciiUpper + " " + szAsciiLower);

    // Compare Strings - the result is true
    Console.WriteLine("The Strings are equal when capitalized ? " +
        (String.Compare(szAsciiUpper.ToUpper(), szAsciiLower.ToUpper())==0?"true":"false") );

    // This is the effective equivalent of another Compare method, which ignores case
    Console.WriteLine("The Strings are equal when capitalized ? " +
        (String.Compare(szAsciiUpper, szAsciiLower, true)==0?"true":"false") );
}

Сведения о версииVersion information

.NET Framework.NET Framework
Все перегрузки поддерживаются в: 4,5, 4, 3,5, 3,0, 2,0, 1,1, 1,0All overloads are supported in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль).NET Framework Client Profile
Все перегрузки поддерживаются в: 4, 3,5 С ПАКЕТОМ ОБНОВЛЕНИЯ 1All overloads are supported in: 4, 3.5 SP1

Переносимая библиотека классовPortable Class Library
Поддерживаются все перегрузки без параметра SByte*All overloads without an SByte* parameter are supported

Приложения .NET для Магазина Windows.NET for Windows Store apps
В следующие версии поддерживаются все перегрузки без параметра SByte*. Windows 8All overloads without an SByte* parameter are supported in: Windows 8

String(Char*)

Важно!

Этот API несовместим с CLS.

Инициализирует новый экземпляр класса String значением, определенным указателем на массив знаков Юникода.Initializes a new instance of the String class to the value indicated by a specified pointer to an array of Unicode characters.

public:
 String(char* value);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public String (char* value);
new string : nativeptr<char> -> string

Параметры

value
Char*

Указатель на строку знаков в кодировке Юникод, завершающуюся нулевым значением.A pointer to a null-terminated array of Unicode characters.

Атрибуты

Исключения

Текущий процесс не имеет доступа на чтение ко всем рассматриваемым символам.The current process does not have read access to all the addressed characters.

value указывает массив, содержащий недопустимый символ Юникода, или value определяет адрес меньше 64 000.value specifies an array that contains an invalid Unicode character, or value specifies an address less than 64000.

Комментарии

Примечание

Примеры и подробные сведения об использовании этой и других перегрузок конструктора String см. в разделе Сводка по конструктору String.For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

Безопасность

SecurityCriticalAttribute
Требуется полное доверие для немедленного вызывающего объекта.requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

String(Char[])

Инициализирует новый экземпляр класса String символами Юникода, заданными в виде массива символов.Initializes a new instance of the String class to the Unicode characters indicated in the specified character array.

public:
 String(cli::array <char> ^ value);
public String (char[] value);
new string : char[] -> string
Public Sub New (value As Char())

Параметры

value
Char[]

Массив знаков Юникода.An array of Unicode characters.

Комментарии

Примечание

Примеры и подробные сведения об использовании этой и других перегрузок конструктора String см. в разделе Сводка по конструктору String.For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

String(ReadOnlySpan<Char>)

Инициализирует новый экземпляр класса String символами Юникода, заданными в виде доступного только для чтения диапазона.Initializes a new instance of the String class to the Unicode characters indicated in the specified read-only span.

public:
 String(ReadOnlySpan<char> value);
public String (ReadOnlySpan<char> value);
new string : ReadOnlySpan<char> -> string
Public Sub New (value As ReadOnlySpan(Of Char))

Параметры

value
ReadOnlySpan<Char>

Доступный только для чтения диапазон символов Юникода.A read-only span of Unicode characters.

String(SByte*)

Важно!

Этот API несовместим с CLS.

Инициализирует новый экземпляр класса String значением, определенным указателем на массив 8-разрядных целых чисел со знаком.Initializes a new instance of the String class to the value indicated by a pointer to an array of 8-bit signed integers.

public:
 String(System::SByte* value);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public String (sbyte* value);
new string : nativeptr<sbyte> -> string

Параметры

value
SByte*

Указатель на массив 8-разрядных целых чисел со знаком, завершающийся нулевым значением.A pointer to a null-terminated array of 8-bit signed integers. Целые числа интерпретируются с использованием текущей системы кодировки страницы системным кодом (то есть, кодировки, заданной Default).The integers are interpreted using the current system code page encoding (that is, the encoding specified by Default).

Атрибуты

Исключения

Свойство value имеет значение null.value is null.

Не удалось инициализировать новый экземпляр String с помощью value, если предполагается, что value представлен в кодировке ANSI.A new instance of String could not be initialized using value, assuming value is encoded in ANSI.

Длина новой инициализируемой строки, определяемая символом, завершающимся нулевым значением value, слишком велика для выделения.The length of the new string to initialize, which is determined by the null termination character of value, is too large to allocate.

value указывает недопустимый адрес.value specifies an invalid address.

Комментарии

Примечание

Примеры и подробные сведения об использовании этой и других перегрузок конструктора String см. в разделе Сводка по конструктору String.For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

Безопасность

SecurityCriticalAttribute
Требуется полное доверие для немедленного вызывающего объекта.requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

String(Char, Int32)

Инициализирует новый экземпляр класса String значением, полученным путем повторения заданного знака Юникода указанное число раз.Initializes a new instance of the String class to the value indicated by a specified Unicode character repeated a specified number of times.

public:
 String(char c, int count);
public String (char c, int count);
new string : char * int -> string
Public Sub New (c As Char, count As Integer)

Параметры

c
Char

Знак Юникода.A Unicode character.

count
Int32

Количество повторов c.The number of times c occurs.

Исключения

Значение параметра count меньше нуля.count is less than zero.

Комментарии

Примечание

Примеры и подробные сведения об использовании этой и других перегрузок конструктора String см. в разделе Сводка по конструктору String.For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

String(Char*, Int32, Int32)

Важно!

Этот API несовместим с CLS.

Инициализирует новый экземпляр класса String значением, которое определяется заданным указателем на массив знаков Юникода, начальной позицией знака в этом массиве и длиной.Initializes a new instance of the String class to the value indicated by a specified pointer to an array of Unicode characters, a starting character position within that array, and a length.

public:
 String(char* value, int startIndex, int length);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public String (char* value, int startIndex, int length);
new string : nativeptr<char> * int * int -> string

Параметры

value
Char*

Указатель на массив знаков Юникода.A pointer to an array of Unicode characters.

startIndex
Int32

Начальная позиция в value.The starting position within value.

length
Int32

Используемое количество знаков в value.The number of characters within value to use.

Атрибуты

Исключения

startIndex или length меньше нуля, value + startIndex приводит к переполнению указателя, или текущий процесс не имеет доступа на чтение ко всем адресуемым символам.startIndex or length is less than zero, value + startIndex cause a pointer overflow, or the current process does not have read access to all the addressed characters.

value указывает массив, содержащий недопустимый символ Юникода, или value + startIndex определяет адрес меньше 64 000.value specifies an array that contains an invalid Unicode character, or value + startIndex specifies an address less than 64000.

Комментарии

Примечание

Примеры и подробные сведения об использовании этой и других перегрузок конструктора String см. в разделе Сводка по конструктору String.For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

Безопасность

SecurityCriticalAttribute
Требуется полное доверие для немедленного вызывающего объекта.requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

String(Char[], Int32, Int32)

Инициализирует новый экземпляр класса String значением, заданным массивом знаков Юникода, начальной позицией знака в пределах данного массива и длиной.Initializes a new instance of the String class to the value indicated by an array of Unicode characters, a starting character position within that array, and a length.

public:
 String(cli::array <char> ^ value, int startIndex, int length);
public String (char[] value, int startIndex, int length);
new string : char[] * int * int -> string
Public Sub New (value As Char(), startIndex As Integer, length As Integer)

Параметры

value
Char[]

Массив знаков Юникода.An array of Unicode characters.

startIndex
Int32

Начальная позиция в value.The starting position within value.

length
Int32

Используемое количество знаков в value.The number of characters within value to use.

Исключения

Свойство value имеет значение null.value is null.

Значение параметра startIndex или length меньше нуля.startIndex or length is less than zero.

- или --or- Сумма startIndex и length больше, чем число элементов в value.The sum of startIndex and length is greater than the number of elements in value.

Комментарии

Примечание

Примеры и подробные сведения об использовании этой и других перегрузок конструктора String см. в разделе Сводка по конструктору String.For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

String(SByte*, Int32, Int32)

Важно!

Этот API несовместим с CLS.

Инициализирует новый экземпляр класса String значением, определяемым заданным указателем на массив 8-разрядных целых чисел со знаком, начальной позицией в пределах массива и длиной.Initializes a new instance of the String class to the value indicated by a specified pointer to an array of 8-bit signed integers, a starting position within that array, and a length.

public:
 String(System::SByte* value, int startIndex, int length);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public String (sbyte* value, int startIndex, int length);
new string : nativeptr<sbyte> * int * int -> string

Параметры

value
SByte*

Указатель на массив 8-разрядных целых чисел со знаком.A pointer to an array of 8-bit signed integers. Целые числа интерпретируются с использованием текущей системы кодировки страницы системным кодом (то есть, кодировки, заданной Default).The integers are interpreted using the current system code page encoding (that is, the encoding specified by Default).

startIndex
Int32

Начальная позиция в value.The starting position within value.

length
Int32

Используемое количество знаков в value.The number of characters within value to use.

Атрибуты

Исключения

Свойство value имеет значение null.value is null.

Значение параметра startIndex или length меньше нуля.startIndex or length is less than zero.

- или --or- Адрес, указанный значениями value + startIndex, слишком велик для текущей платформы, то есть при вычислении адреса произошло переполнение.The address specified by value + startIndex is too large for the current platform; that is, the address calculation overflowed.

- или --or- Длина новой инициализируемой строки слишком велика для выделения.The length of the new string to initialize is too large to allocate.

Адрес, указанный значениями value + startIndex, меньше 64 000.The address specified by value + startIndex is less than 64K.

- или --or- Не удалось инициализировать новый экземпляр String с помощью value, исходя из предположения, что значение value представлено в кодировке ANSI.A new instance of String could not be initialized using value, assuming value is encoded in ANSI.

value, startIndex и length совместно определяют недопустимый адрес.value, startIndex, and length collectively specify an invalid address.

Комментарии

Примечание

Примеры и подробные сведения об использовании этой и других перегрузок конструктора String см. в разделе Сводка по конструктору String.For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

Безопасность

SecurityCriticalAttribute
Требуется полное доверие для немедленного вызывающего объекта.requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

String(SByte*, Int32, Int32, Encoding)

Важно!

Этот API несовместим с CLS.

Инициализирует новый экземпляр класса String значением, определенным заданным указателем на массив 8-разрядных целых чисел со знаком, начальной позицией в пределах этого массива, длиной и объектом Encoding.Initializes a new instance of the String class to the value indicated by a specified pointer to an array of 8-bit signed integers, a starting position within that array, a length, and an Encoding object.

public:
 String(System::SByte* value, int startIndex, int length, System::Text::Encoding ^ enc);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public String (sbyte* value, int startIndex, int length, System.Text.Encoding enc);
new string : nativeptr<sbyte> * int * int * System.Text.Encoding -> string

Параметры

value
SByte*

Указатель на массив 8-разрядных целых чисел со знаком.A pointer to an array of 8-bit signed integers.

startIndex
Int32

Начальная позиция в value.The starting position within value.

length
Int32

Используемое количество знаков в value.The number of characters within value to use.

enc
Encoding

Объект, определяющий способ кодировки массива, на который указывает параметр value.An object that specifies how the array referenced by value is encoded. Если значением параметра enc является null, предполагается кодировка ANSI.If enc is null, ANSI encoding is assumed.

Атрибуты

Исключения

Свойство value имеет значение null.value is null.

Значение параметра startIndex или length меньше нуля.startIndex or length is less than zero.

- или --or- Адрес, указанный значениями value + startIndex, слишком велик для текущей платформы, то есть при вычислении адреса произошло переполнение.The address specified by value + startIndex is too large for the current platform; that is, the address calculation overflowed.

- или --or- Длина новой инициализируемой строки слишком велика для выделения.The length of the new string to initialize is too large to allocate.

Адрес, указанный значениями value + startIndex, меньше 64 000.The address specified by value + startIndex is less than 64K.

- или --or- Не удалось инициализировать новый экземпляр String с помощью value, если предполагается, что value представлен в кодировке enc.A new instance of String could not be initialized using value, assuming value is encoded as specified by enc.

value, startIndex и length совместно определяют недопустимый адрес.value, startIndex, and length collectively specify an invalid address.

Комментарии

Примечание

Примеры и подробные сведения об использовании этой и других перегрузок конструктора String см. в разделе Сводка по конструктору String.For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

Безопасность

SecurityCriticalAttribute
Требуется полное доверие для немедленного вызывающего объекта.requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

Применяется к