String クラスの新しいインスタンスを初期化し、8 ビット符号付き整数の配列を指すポインタにより示される値に設定します。
このコンストラクタは、CLS に準拠していません。
名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文
'宣言
Visual Basic は、安全でない型を使用したり戻したりする API をサポートしません。
'使用
Visual Basic は、安全でない型を使用したり戻したりする API をサポートしません。
[CLSCompliantAttribute(false)]
public String (
sbyte* value
)
[CLSCompliantAttribute(false)]
public:
String (
signed char* value
)
J# は、安全でない型を使用したり戻したりする API をサポートしません。
JScript は、安全でない型を使用したり戻したりする API をサポートしません。
パラメータ
- value
終端が null の 8 ビット符号付き整数の配列へのポインタ。
例外
例外の種類 | 条件 |
---|---|
value が null 参照 (Visual Basic では Nothing) です。 |
|
(value が ASCII でエンコードされていると仮定すると) value では、String の新しいインスタンスを初期化できません。 |
|
初期化対象の新しい文字列の長さ (value の null 終端文字によって判断される) が大きすぎて、メモリを確保できません。 |
|
value に無効なアドレスが指定されています。 |
解説
value パラメータは、ASCII エンコードの文字列を表す配列へのポインタを指定する必要があります。つまり、文字列は、ANSI コード ページを使ってエンコードされます。
このコンストラクタは、このポインタが指定する位置を先頭に、null 文字 (16 進 0x00) に達するまで value の文字をコピーします。
指定した配列が null で終わっていない場合、このコンストラクタの動作はシステムに依存します。たとえば、このような状況は、アクセス違反の原因となる可能性があります。
C# では、このコンストラクタはアンセーフ コードのコンテキストだけで定義されます。
使用例
このコンストラクタを使用して 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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 2.0、1.1、1.0
.NET Compact Framework
サポート対象 : 2.0、1.0