String コンストラクタとは? わかりやすく解説

String コンストラクタ (Char*)

String クラス新しインスタンス初期化し指定した Unicode 文字配列を指すポインタにより示される値に設定します

このコンストラクタは、CLS準拠していません。  

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

[CLSCompliantAttribute(false)] 
public String (
    char* value
)
[CLSCompliantAttribute(false)] 
public:
String (
    wchar_t* value
)
J# は、安全でない型を使用した戻したりする APIサポートしません。

パラメータ

value

終端nullUnicode 文字配列を指すポインタ

例外例外
例外種類条件

ArgumentOutOfRangeException

現在のプロセスが、アドレス指定する文字すべての読み取りアクセス持っていません。

ArgumentNullException

valuenull 参照 (Visual Basic では Nothing) です。

ArgumentException

value無効な Unicode 文字を含む配列指定しているか、 value が 64000 よりも小さアドレス指定してます。

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

String コンストラクタ (SByte*, Int32, Int32, Encoding)

String クラス新しインスタンス初期化し8 ビット符号付き整数配列を指す指定ポインタ配列内の開始文字位置長さ、および Encoding オブジェクトにより示される値に設定します

このコンストラクタは、CLS準拠していません。  

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

ArgumentNullException

valuenull 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

startIndex または length が 0 未満です。

または

value + startIndex によって指定されるアドレスが、現在のプラットフォームで扱うことのできる範囲超えたため、アドレス計算オーバーフローしました

または

初期化対象新しい文字列の長さ大きすぎて、メモリ確保できません。

ArgumentException

value + startIndex によって指定されアドレスが 64K 未満です。

または

(valueenc指定基づいてエンコードされていると仮定すると) value では、String新しインスタンス初期化できません。

AccessViolationException

valuestartIndex、および length組み合わせによって参照されるアドレス無効です。

解説解説
使用例使用例

このコンストラクタ使用して 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
 ) );
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

String コンストラクタ (SByte*, Int32, Int32)

String クラス新しインスタンス初期化し8 ビット符号付き整数配列を指す指定ポインタ配列内の開始文字位置、および長さにより示される値に設定します

このコンストラクタは、CLS準拠していません。  

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

ArgumentNullException

valuenull 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

startIndex または length が 0 未満です。

または

value + startIndex によって指定されるアドレスが、現在のプラットフォームで扱うことのできる範囲超えたため、アドレス計算オーバーフローしました

または

初期化対象新しい文字列の長さ大きすぎて、メモリ確保できません。

ArgumentException

value + startIndex によって指定されアドレスが 64K 未満です。

または

(valueASCIIエンコードされていると仮定すると) value では、String新しインスタンス初期化できません。

AccessViolationException

valuestartIndex、および length組み合わせによって参照されるアドレス無効です。

解説解説
使用例使用例

このコンストラクタ使用して 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") ) );
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

String コンストラクタ (SByte*)

String クラス新しインスタンス初期化し8 ビット符号付き整数配列を指すポインタにより示される値に設定します

このコンストラクタは、CLS準拠していません。  

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

ArgumentNullException

valuenull 参照 (Visual Basic では Nothing) です。

ArgumentException

(valueASCIIエンコードされていると仮定すると) value では、String新しインスタンス初期化できません。

ArgumentOutOfRangeException

初期化対象新しい文字列の長さ (valuenull 終端文字によって判断される) が大きすぎて、メモリ確保できません。

AccessViolationException

value無効なアドレス指定されています。

解説解説
使用例使用例

このコンストラクタ使用して 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") ) );
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

String コンストラクタ (Char*, Int32, Int32)

String クラス新しインスタンス初期化しUnicode 文字配列を指す指定ポインタ配列内の開始文字位置、および長さにより示される値に設定します

このコンストラクタは、CLS準拠していません。  

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

[CLSCompliantAttribute(false)] 
public String (
    char* value,
    int startIndex,
    int length
)
[CLSCompliantAttribute(false)] 
public:
String (
    wchar_t* value, 
    int startIndex, 
    int length
)
J# は、安全でない型を使用した戻したりする APIサポートしません。

パラメータ

value

Unicode 文字配列を指すポインタ

startIndex

value 内の開始位置

length

使用する value 内の文字数

例外例外
例外種類条件

ArgumentOutOfRangeException

startIndex または length が 0 より小さいか、value + startIndex によってポインタ オーバーフロー発生するか、または現在のプロセスアドレス指定する文字すべてのアクセス権持っていません。

ArgumentNullException

valuenull 参照 (Visual Basic では Nothing) です。

ArgumentException

value無効な Unicode 文字を含む配列指定しているか、 value + startIndex が 64000 よりも小さアドレス指定してます。

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

String コンストラクタ (Char[], Int32, Int32)

String クラス新しインスタンス初期化しUnicode 文字配列配列内の開始文字位置、および長さにより示される値に設定します

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

ArgumentNullException

valuenull 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

startIndex または length が 0 未満です。

または

startIndexlength合計値が、value 内の要素より大きい値です。

解説解説

length が 0 の場合は、Empty インスタンス初期化されます

このコンストラクタvaluestartIndex から (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." ) );
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

String コンストラクタ

String クラス新しインスタンス初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
String (Char*) String クラス新しインスタンス初期化し指定した Unicode 文字配列を指すポインタにより示される値に設定します

.NET Compact Framework によってサポートされています。

String (Char[]) String クラス新しインスタンス初期化しUnicode 文字配列により示される値に設定します

.NET Compact Framework によってサポートされています。

String (SByte*) String クラス新しインスタンス初期化し8 ビット符号付き整数配列を指すポインタにより示される値に設定します

.NET Compact Framework によってサポートされています。

String (Char, Int32) String クラス新しインスタンス初期化し指定した回数だけ繰り返した指定Unicode 文字が示す値に設定します

.NET Compact Framework によってサポートされています。

String (Char*, Int32, Int32) String クラス新しインスタンス初期化しUnicode 文字配列を指す指定ポインタ配列内の開始文字位置、および長さにより示される値に設定します

.NET Compact Framework によってサポートされています。

String (Char[], Int32, Int32) String クラス新しインスタンス初期化しUnicode 文字配列配列内の開始文字位置、および長さにより示される値に設定します

.NET Compact Framework によってサポートされています。

String (SByte*, Int32, Int32) String クラス新しインスタンス初期化し8 ビット符号付き整数配列を指す指定ポインタ配列内の開始文字位置、および長さにより示される値に設定します
String (SByte*, Int32, Int32, Encoding) String クラス新しインスタンス初期化し8 ビット符号付き整数配列を指す指定ポインタ配列内の開始文字位置長さ、および Encoding オブジェクトにより示される値に設定します
参照参照

String コンストラクタ (Char[])

String クラス新しインスタンス初期化しUnicode 文字配列により示される値に設定します

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

解説解説

値が null 参照 (Visual Basic では Nothing) であるか、または要素含んでない場合は、Empty インスタンス初期化されます

使用例使用例

このコンストラクタ使用して 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")
 ) );
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

String コンストラクタ (Char, Int32)

String クラス新しインスタンス初期化し指定した回数だけ繰り返した指定Unicode 文字が示す値に設定します

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

例外例外
例外種類条件

ArgumentOutOfRangeException

count が 0 未満です。

解説解説
使用例使用例

このコンストラクタ使用して 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." ) );
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「String コンストラクタ」の関連用語

String コンストラクタのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



String コンストラクタのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS