String-Konstruktor (SByte*, Int32, Int32, Encoding)
Initialisiert eine neue Instanz der String-Klasse mit dem Wert, der durch einen angegebenen Zeiger auf ein Array von 8-Bit-Ganzzahlen mit Vorzeichen, die Position des ersten Zeichens innerhalb dieses Arrays, eine Länge und ein Encoding-Objekt angegeben wird.
Dieser Konstruktor ist nicht CLS-kompatibel.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Visual Basic unterstützt keine APIs, die unsichere Typen nutzen oder zurückgeben.
'Usage
Visual Basic unterstützt keine APIs, die unsichere Typen nutzen oder zurückgeben.
[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# unterstützt keine APIs, die unsichere Typen nutzen oder zurückgeben.
JScript unterstützt keine APIs, die unsichere Typen nutzen oder zurückgeben.
Parameter
- value
Ein Zeiger auf ein Array von 8-Bit-Ganzzahlen mit Vorzeichen.
- startIndex
Die Anfangsposition in value.
- length
Die Anzahl der aus value zu verwendenden Zeichen.
- enc
Ein Encoding-Objekt, das angibt, wie das Array codiert ist, auf das value verweist. Wenn encNULL (Nothing in Visual Basic) ist, wird von ANSI-Codierung ausgegangen.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
value ist NULL (Nothing in Visual Basic). |
|
startIndex oder length ist kleiner als 0 (null). - oder - Die durch value+startIndex angegebene Adresse ist für die aktuelle Plattform zu groß, d. h., bei der Berechnung der Adresse ist ein Überlauf aufgetreten. - oder - Die Länge der zu initialisierenden neuen Zeichenfolge ist zu groß und kann daher nicht reserviert werden. |
|
Die durch value+startIndex angegebene Adresse ist kleiner als 64K. – oder – Eine neue Instanz von String konnte nicht mit value initialisiert werden, wenn angenommen wird, dass value entsprechend enc codiert ist. |
|
value, startIndex und length geben zusammen eine ungültige Adresse an. |
Hinweise
Es wird angenommen, dass der value-Parameter auf ein Array zeigt, das eine entsprechend enc codierte Zeichenfolge darstellt.
Wenn length 0 (null) ist, wird die neue Instanz mit der leeren Zeichenfolge ("") initialisiert.
Dieser Konstruktor verarbeitet Zeichen aus value ab startIndex bis (startIndex+length-1).
Wenn der angegebene Bereich den für die Zeichenfolge reservierten Speicherbereich überschreitet, ist das Verhalten dieses Konstruktors systemabhängig. Eine derartige Situation könnte z. B. zu einer Zugriffsverletzung führen.
In C# ist dieser Konstruktor nur im Kontext von unsicherem Code definiert.
Beispiel
Im folgenden einfachen Codebeispiel wird veranschaulicht, wie mit diesem Konstruktor eine Instanz eines UTF-8-String erstellt werden kann.
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 ) );
Plattformen
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 unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
String-Klasse
String-Member
System-Namespace
SByte-Struktur
Int32-Struktur