2010-12-29 23 views
1

Ich verwende Int32.Parse(), um den Wert einer DropDownList zu konvertieren; aber der Rückgabewert nach der Umwandlung ist:Int32.Parse() gibt 0x0001 zurück, wenn 0 erwartet wird - warum?

0x0001

statt der erwarteten 0.

Mein Code ist:

myObject.Id = Int32.Parse(ddlName.SelectedValue); 

Der gewählte Wert "0" in diesem Fall ist. Warum gibt es eine '0x0001' anstelle einer 0 zurück? Was passiert und ist das eine Speicherregisteradresse?

+0

Sind Sie sicher, dass Sie SelectedValue und SelectedIndex nicht verwirren? – codekaizen

+1

Sie haben hier etwas falsch. Das ist nicht was Int32.Parse() tut. Durchlaufen Sie es im Debugger und schauen Sie sich den Wert an, der übergeben wird. Etwas ist sicherlich nicht das, was Sie annehmen. –

+0

Danke für den Beitrag bearbeiten CodeKaizen. Ich habe eine Antwort von Madhur erhalten. Es war das Debug-Hex-Problem. –

Antwort

4

Überprüfen Sie Debug Fenster?

Überprüfen Sie, ob Sie in Visual Studio Watch als Hex anzeigen aktiviert haben.

+0

Ja, ich überprüfe das Debug-Fenster. –

+0

Es scheint mir nicht so, dass er sich um die hexadezimale Darstellung genauso sorgt wie um den falschen ganzzahligen Wert. – codekaizen

+0

Danke Madhur Ich habe Hex auf Debug versehentlich gedrückt. Uncheck Hex hat das Problem behoben. –

2

int.Parse(string s) verwendet die Standardeinstellung CultureInfo, aber ich bin absolut sicher, "0" kann nicht zu 0x0001 in einer der Kulturen geparst werden (Ich habe alle Kulturen geschleift und sehe, ob "0" zu anderen Werten geparst wird) "0x"). Also woanders ist falsch. Ich denke, Sie sollten besser überprüfen:

(1) string s = ddlName.SelectedValue.ToString(); //make sure s is "0" 
(2) int num = int.Parse(s); //check if num is 0 or not 
(3) myObject.Id = num; //check the type of myObject.Id(supposed an int/long) 
(4) Check the "set" method of myObject.Id (if there is one) 
+0

Ich stimme zu. @ Damien - Ich bin mir sicher, da ist noch etwas falsch. 0x0001 ist nicht gleich 0 in Hex. –

+0

Danke für Ihre Antwort danny. Es war die Hex-Option in Debug-Optionen, die das Problem verursachte. Aber du hast meine Verwirrung über die Bekehrung beseitigt. –

Verwandte Themen