String String String String Constructors

定義

オーバーロード

String(Char*) String(Char*) String(Char*)

String クラスの新しいインスタンスを初期化し、指定した Unicode 文字配列を指すポインターにより示される値に設定します。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(Char[]) String(Char[]) String(Char[])

String クラスの新しいインスタンスを初期化し、Unicode 文字の配列により示される値に設定します。Initializes a new instance of the String class to the value indicated by an array of Unicode characters.

String(ReadOnlySpan<Char>) String(ReadOnlySpan<Char>) String(ReadOnlySpan<Char>) String(ReadOnlySpan<Char>)
String(SByte*) String(SByte*) 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(Char, Int32) String(Char, Int32) String(Char, Int32)

String クラスの新しいインスタンスを初期化し、指定した回数だけ繰り返した指定の Unicode 文字が示す値に設定します。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(Char*, Int32, Int32) String(Char*, Int32, Int32)

String クラスの新しいインスタンスを初期化し、Unicode 文字の配列を指す指定のポインター、配列内の開始文字位置、および長さにより示される値に設定します。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(Char[], Int32, Int32) String(Char[], Int32, Int32) String(Char[], Int32, Int32)

String クラスの新しいインスタンスを初期化し、Unicode 文字の配列、配列内の開始文字位置、および長さにより示される値に設定します。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(SByte*, Int32, Int32) 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(SByte*, Int32, Int32, Encoding) 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
文字配列の一部を使用して1つの文字を繰り返す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

文字列コンストラクターは、ポインターパラメーターを持たない2つのカテゴリと、ポインターパラメーターを持つ2つのカテゴリに分類されます。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#ていません。また、ポインターを使用して unsafe コンテキストで実行するコードが必要です。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)
Unicode 文字の配列によって示される値に新しいインスタンスを初期化します。Initializes the new instance to the value indicated by an array of Unicode characters. このコンストラクターは、Unicode 文字 () をコピーします。This constructor copies Unicode characters(example).

String(Char[] value, Int32 startIndex, Int32 length)
新しいインスタンスを、Unicode 文字の配列、配列内の開始文字位置、および長さ () で示される値に初期化します。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)
指定した回数 () を繰り返して、指定した Unicode 文字で示される値に新しいインスタンスを初期化します。Initializes the new instance to the value indicated by a specified Unicode character repeated a specified number of times (example).

String(char* value)
(CLS に準拠していません) Null 文字 (U + 0000 または ' \ 0 ') で終わる Unicode 文字の配列を指すポインターによって示される値に新しいインスタンスを初期化します。(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 に準拠していません) Unicode 文字の配列へのポインター、配列内の開始文字位置、および長さによって示される値に、新しいインスタンスを初期化します。(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インデックスlength startIndex + から開始してインデックス-1 で終了する Unicode 文字をコピーします (例:)。 startIndexThe 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). コンストラクターは、null 文字value (0x00) に到達するまでポインターによって指定された位置から文字を処理します ()。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から始まる値の文字を処理し、-1 () でstartIndex + length終わります。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[] Unicode 文字の配列。An array of Unicode characters.
c Char Unicode 文字。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 0 の場合、新しいオブジェクトの値は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*
Null で終わる Unicode 文字配列または8ビット符号付き整数の配列へのポインター。A pointer to a null-terminated array of Unicode characters or an array of 8-bit signed integers. String.Emptyvalue または空の配列の場合、新しい文字列の値はになります。nullIf 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 が0の場合、コンストラクターは値がで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 valuenullです。value is null. String(Char[], Int32, Int32)
ArgumentOutOfRangeException startIndexlength、またcountはが0未満です。startIndex,length, or count is less than zero.

または-or-

startIndexlength の合計が、value にある要素の数を超えています。The sum of startIndex and length is greater than the number of elements in value.

または-or-

count が 0 未満です。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無効な Unicode 文字を含む配列を指定します。value specifies an array that contains an invalid Unicode character.

または-or-

valueまたvalueは + が64k未満のアドレスを指定しstartIndexています。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 が 0 未満であるか、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 - 1が無効なアドレスを指定しています。 + lengthvalue, 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)
Unicode またはワイド文字配列へのポインターから文字列を作成します。Create a string from a pointer to a Unicode or wide character array. String(Char*)
ポインターを使用して、Unicode またはワイド文字配列の一部から文字列を作成します。Create a string from a portion of a Unicode or wide character array by using its pointer. String(Char*, Int32, Int32)
char配列からC++文字列を作成します。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には、次の値から文字列を作成できる4種類のコンストラクターオーバーロードも含まれています。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 + - 1への文字を新しい文字列にコピーします。lengthThe String(Char[], Int32, Int32) constructor copies the characters from index startIndex to index startIndex + length - 1 to the new string. length 0 の場合、新しい文字列の値は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)コンストラクターを使用して、0回、1回、または複数回複製された単一の文字から。From a single character that is duplicated zero, one, or more times, by using the String(Char, Int32) constructor. count 0 の場合、新しい文字列の値はString.Emptyになります。If count is zero, the value of the new string is String.Empty.

  • String(Char*)またはString(Char*, Int32, Int32)コンストラクターを使用して、null で終わる文字配列へのポインターから。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から始まる Unicode 文字のシーケンスをコピーし、配列の末尾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 null ポインターの場合、 lengthまたはがゼロの場合、コンストラクターは値がString.Emptyである文字列を作成します。If value is a null pointer or length is zero, the constructor creates a string whose value is String.Empty. コピー操作が配列の末尾に進み、配列が null で終了していない場合、コンストラクターの動作はシステムに依存します。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)が含まれていて、オーバーロードが呼び出された場合、文字列インスタンスには埋め込まれた null を含む文字が含まれlengthます。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. 次の例は、2つの null 文字を含む10個の要素の配列へのポインターが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. アドレスが配列の先頭で、配列内のすべての要素が文字列に追加されるため、コンストラクターは、2つの埋め込み null を含む10文字の文字列をインスタンス化します。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 文字を含まない4文字の文字列になります。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
    

    配列には Unicode 文字を含める必要があります。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.

    startIndex String(Char*, Int32, Int32) length + オーバーロードが呼び出され、配列が null で終了していない場合、またはオーバーロードが呼び出され、-1 が文字シーケンスに割り当てられたメモリの外側にある範囲を含む場合は、 String(Char*)コンストラクターの動作はシステムに依存し、アクセス違反が発生する可能性があります。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. コンストラクターが、null で終了しない配列全体からの文字列のインスタンス化を試行する場合value 、またはから + value + startIndexstartIndex + の配列の範囲がの場合は。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 3 つのコンストラクターは、主に配列を文字列に変換するように設計されています。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)でオーバーロードが呼び出されるバイトが含まれている場合、文字列インスタンスには埋め込まれた null を含む文字が含まれlengthます。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. 次の例は、2つの null 文字を含む10個の要素の配列へのポインターが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. アドレスが配列の先頭で、配列内のすべての要素が文字列に追加されるため、コンストラクターは、2つの埋め込み null を含む10文字の文字列をインスタンス化します。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 文字を含まない4文字の文字列になります。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. 1つの文字列を作成して再利用する代わりに、同じ値を使用して新しい文字列を繰り返し作成すると、メモリが浪費されます。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. 最初の文字列の値を割り当てることによって、2番目の文字列を作成します。It creates a second string by assigning the value of the first string to it. これらは、新しいStringオブジェクトをインスタンス化する最も一般的な2つの方法です。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: 文字配列の一部を使用して1つの文字を繰り返すExample 3: Using a portion of a character array and repeating a single character

次の例では、文字配列のString一部から新しいオブジェクトを作成する方法と、1つの文字の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 Client Profile.NET Framework Client Profile
次のすべてのオーバーロードがサポートされています。4、3.5 SP1All overloads are supported in: 4, 3.5 SP1

ポータブル クラス ライブラリPortable Class Library
*パラメーターのないSByteすべてのオーバーロードがサポートされていますAll overloads without an SByte* parameter are supported

Windows ストア アプリ用 .NET.NET for Windows Store apps
*パラメーターのないSByteすべてのオーバーロードは、でサポートされています。Windows 8All overloads without an SByte* parameter are supported in: Windows 8

String(Char*) String(Char*) String(Char*)

重要

この API は CLS 準拠ではありません。

String クラスの新しいインスタンスを初期化し、指定した Unicode 文字配列を指すポインターにより示される値に設定します。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*

Unicode 文字の null で終わる配列へのポインター。A pointer to a null-terminated array of Unicode characters.

例外

現在のプロセスは、アドレス指定されたすべての文字に対する読み取りアクセス権を持っているわけではありません。The current process does not have read access to all the addressed characters.

value が正しくない Unicode 文字を含む配列を指定しているか、value が 64000 未満のアドレスを指定しています。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(Char[]) String(Char[]) String(Char[])

String クラスの新しいインスタンスを初期化し、Unicode 文字の配列により示される値に設定します。Initializes a new instance of the String class to the value indicated by an array of Unicode characters.

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

パラメーター

value
Char[]

Unicode 文字の配列。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(ReadOnlySpan<Char>) String(ReadOnlySpan<Char>) String(ReadOnlySpan<Char>)

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

パラメーター

String(SByte*) String(SByte*) 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*

終端が null の 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).

例外

String の新しいインスタンス を、value を使用して初期化できませんでした。value が ANSI でエンコードされていると想定しています。A new instance of String could not be initialized using value, assuming value is encoded in ANSI.

value の Null 終端文字によって決定される初期化する新しい文字列の長さが、大きすぎて割り当てられません。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(Char, Int32) String(Char, Int32) String(Char, Int32)

String クラスの新しいインスタンスを初期化し、指定した回数だけ繰り返した指定の Unicode 文字が示す値に設定します。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 Char Char Char

Unicode 文字。A Unicode character.

count
Int32 Int32 Int32 Int32

c の発生回数。The number of times c occurs.

例外

注釈

注意

このコンストラクターと他のStringコンストラクターのオーバーロードに関する例と包括的な使用方法については、 String 「コンストラクターの概要」を参照してください。For examples and comprehensive usage information about this and other String constructor overloads, see the String constructor summary.

String(Char*, Int32, Int32) String(Char*, Int32, Int32) String(Char*, Int32, Int32)

重要

この API は CLS 準拠ではありません。

String クラスの新しいインスタンスを初期化し、Unicode 文字の配列を指す指定のポインター、配列内の開始文字位置、および長さにより示される値に設定します。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*

Unicode 文字の配列を指すポインター。A pointer to an array of Unicode characters.

startIndex
Int32 Int32 Int32 Int32

value 内の開始位置。The starting position within value.

length
Int32 Int32 Int32 Int32

使用する value 内の文字数。The number of characters within value to use.

例外

startIndex または length が 0 未満であるか、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 が正しくない Unicode 文字を含む配列を指定しているか、value + startIndex が 64000 未満のアドレスを指定しています。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(Char[], Int32, Int32) String(Char[], Int32, Int32) String(Char[], Int32, Int32)

String クラスの新しいインスタンスを初期化し、Unicode 文字の配列、配列内の開始文字位置、および長さにより示される値に設定します。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[]

Unicode 文字の配列。An array of Unicode characters.

startIndex
Int32 Int32 Int32 Int32

value 内の開始位置。The starting position within value.

length
Int32 Int32 Int32 Int32

使用する value 内の文字数。The number of characters within value to use.

例外

startIndex または length が 0 未満です。startIndex or length is less than zero.

- または --or- startIndexlength の合計が、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) String(SByte*, Int32, Int32) 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 Int32 Int32 Int32

value 内の開始位置。The starting position within value.

length
Int32 Int32 Int32 Int32

使用する value 内の文字数。The number of characters within value to use.

例外

startIndex または length が 0 未満です。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 K 未満です。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.

valuestartIndexlength 全体で、正しくないアドレスを指定しています。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) String(SByte*, Int32, Int32, Encoding) 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 Int32 Int32 Int32

value 内の開始位置。The starting position within value.

length
Int32 Int32 Int32 Int32

使用する value 内の文字数。The number of characters within value to use.

enc
Encoding Encoding Encoding Encoding

value が参照する配列のエンコード方法を指定するオブジェクト。An object that specifies how the array referenced by value is encoded. encnull の場合は、ANSI エンコーディングが指定されていると見なされます。If enc is null, ANSI encoding is assumed.

例外

startIndex または length が 0 未満です。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 K 未満です。The address specified by value + startIndex is less than 64K.

または-or- String の新しいインスタンスを、value を使用して初期化できませんでした。valueenc の指定に従ってエンコードされていると想定しています。A new instance of String could not be initialized using value, assuming value is encoded as specified by enc.

valuestartIndexlength 全体で、正しくないアドレスを指定しています。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.

適用対象