2012-06-22 2 views
5

den folgenden Code Gegeben:Zeichnet char in einem sicheren Betrieb in C#?

string source = "Some Unicode String"; 
foreach(char value in source) { 

    int y = (int)value; 

} 

Ist es möglich, dass die Besetzung von Zeichen fehlschlagen int könnte (und unter welchen Umständen)?

+0

kurze Antwort, nein (keine.) – Jodrell

Antwort

8

Eine Konvertierung von char zu int wird nicht fehlschlagen, mit einem Wert von char.

Von .NET 4.0 reference

Das .NET Framework verwendet die Char Struktur ein Unicode- Zeichen darzustellen. Der Unicode-Standard identifiziert jedes Unicode-Zeichen mit einer eindeutigen 21-Bit-Skalarzahl, die als Codepunkt bezeichnet wird, und definiert das UTF-16-Codierungsformular , das angibt, wie ein Codepunkt in eine Folge von einem oder mehreren 16-Bit-Werten codiert wird . Jeder 16-Bit-Wert reicht von hexadezimal 0x0000 bis 0xFFFF und wird in einer Char-Struktur gespeichert. Der Wert eines Char-Objekts ist der numerische 16-Bit-Wert (Ordinalwert).

8

Nein, es ist nicht möglich, dass es scheitern könnte. A char reicht von 0x0 bis 0xFFFF (65535), während int von -2.147.483.648 bis 2.147.483.647 reicht, so dass alle Werte von char in den Bereich von int fallen.