.NET Framework クラス ライブラリ
String コンストラクタ (SByte*)

更新 : 2007 年 11 月

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

この API は、CLS に準拠していません。 

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

Visual Basic (宣言)
Visual Basic は、安全でない型を使用したり戻したりする API をサポートしません。
Visual Basic (使用法)
Visual Basic は、安全でない型を使用したり戻したりする API をサポートしません。
C#
[CLSCompliantAttribute(false)]
public String(
    sbyte* value
)
Visual C++
[CLSCompliantAttribute(false)]
public:
String(
    signed char* value
)
J#
J# は、安全でない型を使用したり戻したりする API をサポートしません。
JScript
JScript は、安全でない型を使用したり戻したりする API をサポートしません。

パラメータ

value
型 : System..::.SByte*
終端が null の 8 ビット符号付き整数の配列へのポインタ。
例外

例外条件
ArgumentNullException

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

ArgumentException

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

ArgumentOutOfRangeException

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

AccessViolationException

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

解説

value パラメータは、既定の ANSI コード ページを使用してエンコードされた (Encoding..::.Default によって指定されるエンコード方法です) 文字列を表す配列をポイントしていることが前提です。

k9s9t975.alert_note(ja-jp,VS.90).gifメモ :

既定の ANSI コード ページはシステムに依存するため、システムが異なると、このコンストラクタで同一の符号付きバイト配列から作成された文字列が異なる場合があります。文字列のインスタンス化に符号付きバイト配列を使用する代わりとして、Char の配列 (String..::.String(array<Char>[]()[]) コンストラクタおよび String..::.String(array<Char>[]()[], Int32, Int32) コンストラクタ) または Char の配列へのポインタ (String..::.String(Char*) コンストラクタおよび String..::.String(Char*, Int32, Int32) コンストラクタ) をパラメータとして受け取るいずれかのオーバーロードを使用することをお勧めします。

このコンストラクタは、このポインタが指定する位置を先頭に、null 文字 (16 進 0x00) に達するまで value の文字をコピーします。

指定した配列が null で終わっていない場合、このコンストラクタの動作はシステムに依存します。たとえば、このような状況は、アクセス違反の原因となる可能性があります。

C# では、このコンストラクタはアンセーフ コードのコンテキストだけで定義されます。


このコンストラクタを使用して String クラスのインスタンスを作成する方法を次の簡単なコード例で示します。

C#
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") );
}
Visual C++
// 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
バージョン情報

.NET Framework

サポート対象 : 3.5、3.0、2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 3.5、2.0、1.0

XNA Framework

サポート対象 : 2.0、1.0
参照

参照

タグ :


Page view tracker