In c # warum (char) (1) + (char) (2) ergibt int 3

8

Ich versuche, etwas VB.NET Code zu C # zu verdecken und fand dieses interessante Ding. Das Hinzufügen von zwei Zeichen gibt unterschiedliche Ergebnisse in VB.NET und C # zurück.

VB.NET - gibt die Zeichenfolge

zurück %Vor%

C # - gibt int

zurück %Vor%

Wie kann ich zwei Zeichen in C # hinzufügen (verketten)?

    
SarkarG 20.08.2013, 12:48
quelle

4 Antworten

15

In C # char ist ein numerischer 16-Bit-Typ , also + bedeutet Addition, keine Verkettung. Wenn Sie also a und b hinzufügen, erhalten Sie a+b . Außerdem ist das Ergebnis dieser Ergänzung ein int ( siehe eine kurze Demo ).

Wenn Sie "zwei Zeichen hinzufügen" mit "Verkettung" meinen, können Sie sie in Strings konvertieren, bevor Sie den Operator + anwenden. Eine andere Option wäre string.Format , wie folgt zu verwenden:

%Vor%     
dasblinkenlight 20.08.2013, 12:52
quelle
6

Wenn Sie eine leere Zeichenfolge hinzufügen, können Sie die "Umwandlung" von char in string ... So

erzwingen %Vor%

(technisch gesehen ist es keine Konvertierung. Der Compiler weiß, dass wenn man zu string hinzufügt, er etwas Zauberei machen muss ... Wenn du null zu einer Zeichenkette hinzufügst, betrachte es die null Um ein leerer String zu sein, wenn du versuchst, string hinzuzufügen, tut es string.Concat und wenn du versuchst, etwas anderes hinzuzufügen, macht es .ToString() für das Nicht-String-Mitglied und dann string.Concat )

    
xanatos 20.08.2013 12:58
quelle
0

(char) (1) hat einen ASCII-Wert von 1 und (char) (2) ascii-Wert von 2

, so dass ein ASCII-Wert von 1 + 2 (d. h. (char) 1 + (char) 2) gleich 3 ist.

wenn Sie Folgendes tun: "2" + "1" das wird dir "21" geben (du solltest das nicht benutzen, um Strings zu verbinden, schlechte Übung)

wenn Sie Folgendes tun: '2' + '1' Dies ergibt einen int-Wert von 99, dh ein ascii-Wert von 2 (was 50 ist) + ascii-Wert von 1 (was 49 ist).

    
r.net 20.08.2013 13:01
quelle
0

Die beste Antwort ist in den Kommentaren, also möchte ich es hier zu einer richtigen Antwort erheben. Mit vollem Kredit gehen @Jeow Li Huan:

%Vor%     
Metalogic 24.07.2017 17:45
quelle

Tags und Links