Freigeben über


String-Konstruktor (SByte*)

Initialisiert eine neue Instanz der String-Klasse mit dem durch einen Zeiger auf ein Array von 8-Bit-Ganzzahlen mit Vorzeichen angegebenen Wert.

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
)
[CLSCompliantAttribute(false)] 
public:
String (
    signed char* value
)
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 mit Null endendes Array von 8-Bit-Ganzzahlen mit Vorzeichen.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentNullException

value ist NULL (Nothing in Visual Basic).

ArgumentException

Eine neue Instanz von String konnte nicht mit value initialisiert werden, wenn angenommen wird, dass value in ASCII codiert ist.

ArgumentOutOfRangeException

Die Länge der zu initialisierenden neuen Zeichenfolge, die durch das NULL-Terminierungszeichen von value bestimmt wird, ist zu groß und kann daher nicht reserviert werden.

AccessViolationException

value gibt 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.

Dieser Konstruktor verarbeitet Zeichen aus value ab der durch den Zeiger angegebenen Position bis zu einem NULL-Zeichen (hexadezimal 0x00).

Wenn das angegebene Array nicht mit NULL endet, 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 CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, 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

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

String-Klasse
String-Member
System-Namespace
SByte-Struktur