c # warum gibt das zurück 49: Convert.ToInt32 ('1') [duplizieren]

8

Das funktioniert:

%Vor%

Aber das ist nicht:

%Vor%

Sollte das nicht in tatsächlichen int umgewandelt werden?

    
vent 08.09.2010, 08:44
quelle

5 Antworten

14

Es gibt den ASCII-Wert von Zeichen 1 zurück

Die erste Anweisung behandelt das Argument als String und konvertiert den Wert in Int, Der zweite behandelt das Argument als char und gibt seinen ascii-Wert

zurück     
Sachin Shanbhag 08.09.2010, 08:45
quelle
2

Wie die anderen sagten, gibt Convert den ASCII-Code zurück. Wenn Sie '1' in 1 (int) konvertieren möchten, sollten Sie

verwenden %Vor%     
Jürgen Steinblock 08.09.2010 08:55
quelle
2

Der Code '1' ist derselbe wie (char)49 (weil der Unicode-Codepunkt des Zeichens 1 49 ist). Und Convert.ToInt32(char) gibt den Codepunkt dieses Zeichens als int zurück.

    
svick 08.09.2010 08:49
quelle
1

Wie bereits erwähnt: In Ihrem zweiten Beispiel ( '1' ) verwenden Sie char literal. A char ist ein numerischer Typ. Es wird nicht wie im String-Beispiel ( "1" ) geparst, da es bereits eine Zahl ist - nur eine Umwandlung in ein breiteres Zahlenformat (von 16 Bit bis 32 Bit).

    
Daren Thomas 08.09.2010 08:52
quelle
1

Es behandelt '1' als char und int Form von jedem char ist sein ASCII-Äquivalent, so dass es sein ASCII-Äquivalent zurückgibt. Aber im Fall von "1" behandelt es es als String und konvertiert es in Integer.

    
Nakul Chaudhary 08.09.2010 09:21
quelle

Tags und Links