String クラスの新しいインスタンスを初期化し、8 ビット符号付き整数の配列を指す指定のポインタ、配列内の開始文字位置、長さ、および Encoding オブジェクトにより示される値に設定します。
このコンストラクタは、CLS に準拠していません。
名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文
'宣言
Visual Basic は、安全でない型を使用したり戻したりする API をサポートしません。
'使用
Visual Basic は、安全でない型を使用したり戻したりする API をサポートしません。
[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
)
J# は、安全でない型を使用したり戻したりする API をサポートしません。
JScript は、安全でない型を使用したり戻したりする API をサポートしません。
パラメータ
- value
8 ビット符号付き整数の配列へのポインタ。
- startIndex
value 内の開始位置。
- length
使用する value 内の文字数。
- enc
value が参照する配列のエンコード方法を指定する Encoding オブジェクト。enc が null 参照 (Visual Basic では Nothing) の場合は、ANSI エンコーディングが指定されている見なされます。
例外
例外の種類 | 条件 |
---|---|
value が null 参照 (Visual Basic では Nothing) です。 |
|
startIndex または length が 0 未満です。 または value + startIndex によって指定されるアドレスが、現在のプラットフォームで扱うことのできる範囲を超えたため、アドレス計算がオーバーフローしました。 または 初期化対象の新しい文字列の長さが大きすぎて、メモリを確保できません。 |
|
value + startIndex によって指定されたアドレスが 64K 未満です。 または (value が enc の指定に基づいてエンコードされていると仮定すると) value では、String の新しいインスタンスを初期化できません。 |
|
value、startIndex、および length の組み合わせによって参照されるアドレスは無効です。 |
解説
value パラメータには、enc の指定に基づいてエンコードされた文字列を表す配列へのポインタを指定する必要があります。
length がゼロの場合は、新しいインスタンスが空の文字列 ("") に初期化されます。
このコンストラクタは value の startIndex から (startIndex + length - 1) までの文字を処理します。
指定した範囲が、この一連の文字に割り当てられたメモリの外部にある場合、このコンストラクタの動作はシステムに依存します。たとえば、このような状況は、アクセス違反の原因となる可能性があります。
C# では、このコンストラクタはアンセーフ コードのコンテキストだけで定義されます。
使用例
このコンストラクタを使用して 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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 2.0、1.1、1.0