String コンストラクタ (Char*)
アセンブリ: mscorlib (mscorlib.dll 内)



value が null ポインタの場合は、Empty インスタンスが初期化されます。
このコンストラクタは、Unicode 文字シーケンスを、指定したポインタの位置から null 文字 (16 進数で 0x00) までコピーします。
指定した配列が null で終わっていない場合、このコンストラクタの動作はシステムに依存します。たとえば、このような状況は、アクセス違反の原因となる可能性があります。

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


String コンストラクタ (SByte*, Int32, Int32, Encoding)
アセンブリ: mscorlib (mscorlib.dll 内)

[CLSCompliantAttribute(false)] public String ( sbyte* value, int startIndex, int length, Encoding enc )
[CLSCompliantAttribute(false)] public: String ( signed char* value, int startIndex, int length, Encoding^ enc )

例外の種類 | 条件 |
---|---|
ArgumentNullException | value が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | startIndex または length が 0 未満です。 または value + startIndex によって指定されるアドレスが、現在のプラットフォームで扱うことのできる範囲を超えたため、アドレス計算がオーバーフローしました。 または |
ArgumentException | value + startIndex によって指定されたアドレスが 64K 未満です。 または (value が enc の指定に基づいてエンコードされていると仮定すると) value では、String の新しいインスタンスを初期化できません。 |
AccessViolationException |

value パラメータには、enc の指定に基づいてエンコードされた文字列を表す配列へのポインタを指定する必要があります。
length がゼロの場合は、新しいインスタンスが空の文字列 ("") に初期化されます。
このコンストラクタは value の startIndex から (startIndex + length - 1) までの文字を処理します。
指定した範囲が、この一連の文字に割り当てられたメモリの外部にある場合、このコンストラクタの動作はシステムに依存します。たとえば、このような状況は、アクセス違反の原因となる可能性があります。

このコンストラクタを使用して UTF-8 String クラスのインスタンスを作成する方法を次の簡単なコード例で示します。
unsafe { String utfeightstring = null; sbyte [] asciiChars = new sbyte[] { 0x51,0x52,0x53,0x54,0x54,0x56 }; UTF8Encoding encoding = new UTF8Encoding(true, true); // Instruct the Garbage Collector not to move the memory fixed(sbyte* pAsciiChars = asciiChars) { utfeightstring = new String(pAsciiChars,0,asciiChars.Length ,encoding); } Console.WriteLine("The UTF8 String is " + utfeightstring ); // prints "QRSTTV" }
char asciiChars[6] = {0x51,0x52,0x53,0x54,0x54,0x56}; char * pstr6 = &asciiChars[ 0 ]; UTF8Encoding^ encoding = gcnew UTF8Encoding( true,true ); String^ utfeightstring = gcnew String( pstr6,0,sizeof(asciiChars),encoding ); // prints "QRSTTV" Console::WriteLine( String::Concat( "The UTF8 String is ", utfeightstring ) );

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


String コンストラクタ (SByte*, Int32, Int32)
アセンブリ: mscorlib (mscorlib.dll 内)


例外の種類 | 条件 |
---|---|
ArgumentNullException | value が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | startIndex または length が 0 未満です。 または value + startIndex によって指定されるアドレスが、現在のプラットフォームで扱うことのできる範囲を超えたため、アドレス計算がオーバーフローしました。 または |
ArgumentException | value + startIndex によって指定されたアドレスが 64K 未満です。 または (value が ASCII でエンコードされていると仮定すると) value では、String の新しいインスタンスを初期化できません。 |
AccessViolationException |

value パラメータは、ASCII エンコードの文字列を表す配列へのポインタを指定する必要があります。つまり、文字列は、ANSI コード ページを使ってエンコードされます。
length がゼロの場合は、新しいインスタンスが空の文字列 ("") に初期化されます。
このコンストラクタは value の startIndex から (startIndex + length - 1) までの文字を処理します。
指定した範囲が、この一連の文字に割り当てられたメモリの外部にある場合、このコンストラクタの動作はシステムに依存します。たとえば、このような状況は、アクセス違反の原因となる可能性があります。

このコンストラクタを使用して String クラスのインスタンスを作成する方法を次の簡単なコード例で示します。
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") ); }
// 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") ) );

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


String コンストラクタ (SByte*)
アセンブリ: mscorlib (mscorlib.dll 内)



value パラメータは、ASCII エンコードの文字列を表す配列へのポインタを指定する必要があります。つまり、文字列は、ANSI コード ページを使ってエンコードされます。
このコンストラクタは、このポインタが指定する位置を先頭に、null 文字 (16 進 0x00) に達するまで value の文字をコピーします。
指定した配列が null で終わっていない場合、このコンストラクタの動作はシステムに依存します。たとえば、このような状況は、アクセス違反の原因となる可能性があります。

このコンストラクタを使用して String クラスのインスタンスを作成する方法を次の簡単なコード例で示します。
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") ); }
// 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") ) );

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


String コンストラクタ (Char*, Int32, Int32)
アセンブリ: mscorlib (mscorlib.dll 内)


例外の種類 | 条件 |
---|---|
ArgumentOutOfRangeException | startIndex または length が 0 より小さいか、value + startIndex によってポインタ オーバーフローが発生するか、または現在のプロセスがアドレス指定する文字すべてのアクセス権を持っていません。 |
ArgumentNullException | value が null 参照 (Visual Basic では Nothing) です。 |
ArgumentException | value が 無効な Unicode 文字を含む配列を指定しているか、 value + startIndex が 64000 よりも小さいアドレスを指定しています。 |

length が 0 の場合は、Empty インスタンスが初期化されます。
このコンストラクタは value の startIndex から (startIndex + length - 1) までの Unicode 文字をコピーします。
指定した範囲が、この一連の文字に割り当てられたメモリの外部にある場合、このコンストラクタの動作はシステムに依存します。たとえば、このような状況は、アクセス違反の原因となる可能性があります。

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


String コンストラクタ (Char[], Int32, Int32)
アセンブリ: mscorlib (mscorlib.dll 内)

Dim value As Char() Dim startIndex As Integer Dim length As Integer Dim instance As New String(value, startIndex, length)


length が 0 の場合は、Empty インスタンスが初期化されます。
このコンストラクタは value の startIndex から (startIndex + length - 1) までの Unicode 文字をコピーします。
パフォーマンスに関する考慮事項テキスト ストリームを解析またはデコードするアプリケーションでは、一連の文字を文字列に変換するために、String コンストラクタまたは StringBuilder.Append メソッドが頻繁に使用されます。まったく同じ一連の文字が繰り返し出現する場合、その都度、同じ値を使って新しい文字列を作成していると、文字列を一度だけ作成して再利用した場合に比べ、メモリの消費が激しくなります。
まったく同じ一連の文字が出現することはわかっていても、具体的な中身を予測できない場合は、String コンストラクタで新しい String オブジェクトを作成するのではなく、ルックアップ テーブルの使用を検討してください。たとえば、XML のタグおよび属性を含むファイルから文字のストリームを読み込んで解析するアプリケーションを考えてみます。このストリームを解析すると、特定のトークン (記号的意味合いを持つ一連の文字) が繰り返し出現します。XML ストリームでは、"0"、"1"、"true"、"false" などの文字列に相当するトークンが頻繁に現れる傾向があります。
出現する各トークンを新しい文字列に変換する代わりに、NameTable オブジェクトを作成して、よく使用される文字列を保持できます。NameTable オブジェクトは、格納された文字列を取得するときに一時メモリを割り当てないので、パフォーマンスが向上します。
アプリケーションはトークンを見つけると、NameTable.Get メソッドを使用してそのトークンをテーブルから取得しようとします。トークンが存在する場合、メソッドは対応する文字列を返します。トークンが存在しない場合は、NameTable.Add メソッドを使用して、トークンをテーブルに挿入します。トークンを挿入すると、メソッドは対応する文字列を返します。いずれの場合も、アプリケーションに適した文字列が返されます。

このコンストラクタを使用して String クラスのインスタンスを作成する方法を次の簡単なコード例で示します。
// Create a Unicode String with 5 Greek Alpha characters String szGreekAlpha = new String('\u0319',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('\u0319'); // 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 String^ szGreekAlpha = gcnew String( L'\x0319',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'\x0319' ); // 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." ) );

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


String コンストラクタ


String コンストラクタ (Char[])
アセンブリ: mscorlib (mscorlib.dll 内)



このコンストラクタを使用して String クラスのインスタンスを作成する方法を次の簡単なコード例で示します。
// 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 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") ) );

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


String コンストラクタ (Char, Int32)
アセンブリ: mscorlib (mscorlib.dll 内)




このコンストラクタを使用して String クラスのインスタンスを作成する方法を次の簡単なコード例で示します。
// Create a Unicode String with 5 Greek Alpha characters String szGreekAlpha = new String('\u0319',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('\u0319'); // 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 String^ szGreekAlpha = gcnew String( L'\x0319',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'\x0319' ); // 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." ) );

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- String コンストラクタのページへのリンク