String-Konstruktor (SByte*, Int32, Int32)
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 und die Länge 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
)
[CLSCompliantAttribute(false)]
public:
String (
signed char* value,
int startIndex,
int length
)
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.
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 in ASCII 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 in ASCII codierte Zeichenfolge darstellt, d. h., die Zeichenfolge ist unter Verwendung der ANSI-Codepage codiert.
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 der String-Klasse erstellt werden kann.
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") ) );
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