C# Zahlen aus Listbox via Button zusammenzählen geht das?

1 Antwort

Ich kann dir leider nur in VB.Net eine 100%ige Lösung schreiben.
Es gibt aber Online VB.Net -> C#-Converter, die C#-Codes die ich gleich poste sind dann halt von dem Onlineconverter sollten aber genauso funktionieren :)

Du musst komma benutzen anstelle von Punkten.

VB.Net


Dim summe As Double = 0.0
For Each item As Object In ListBox1.Items
summe += item
Next
'Die Ausgabe liegt jetzt in der Variable

C#

double summe = 0.0;
foreach (object item in ListBox1.Items) {
summe += item;
}
//Die Ausgabe liegt jetzt in der Variable
Woher ich das weiß:eigene Erfahrung – Programmier/IT Erfahrung seit 2009 (Freizeit und Beruf)

PeterFranz1234 
Fragesteller
 24.11.2015, 21:32

OK ich entschuldige mich schon mal für die Frage aber wie gesagt bin neuling im Thema:

Ich bekom den Error "Der +=Operator kann nicht auf Operanden von Typ "double" und "object" angewendet werden" 

Interpretiere ich das richtig das double und object so nicht genutzt werden können?

0
xGlumi  24.11.2015, 21:42
@PeterFranz1234

Sorry, wusste nicht dass C# das nicht kann.

Habe es eben durchgetestet, du musst die Zeile durch folgende ersetzen:

summe +=  Convert.ToDouble(item);

MFG xGlumi

0
PWolff  24.11.2015, 21:48
@PeterFranz1234

Das Problem ist hier in VB und C# dasselbe: ListBox.Item ist eine Auflistung von Elementen vom Typ Object; die ListBox zeigt das Ergebnis der ToString-Funktion dieser Objekte an.

Ich würde als Wert zum Einfügen die Zahl nehmen, kein String. (Typ Double oder Decimal - für Preise empfiehlt Microsoft Decimal, aber wenn ihr in der Schule Double nehmt, nimm das). Die Darstellung mit dem Komma macht die ToString-Funktion automatisch, wenn das in den Systemeinstellungen so eingetragen ist.

Dann kannst du

summe += (double)item;

verwenden. Die Typumwandlung kann nicht fehlschlagen, da als item ja ein Wert vom Typ double eingetragen worden ist.

0
xGlumi  24.11.2015, 21:56
@PWolff

Du brauchst zwar keine Antwort, aber du bekommst denoch eine.

Wenn du Leuten helfen möchtest, dann bitte mit korrektem Code (und bitte ohne Erklärung die ein Falsches Vorgehen rechtfertigt)


Hab extra nochmal VisualStudio aufgemacht, um dir eben den Fehler zu copy/pasten, der bei deiner Variante kommen wird.


Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in SandboxC.exe aufgetreten.
Zusätzliche Informationen:
Die angegebene Umwandlung ist ungültig.

MFG xGlumi

0
PeterFranz1234 
Fragesteller
 24.11.2015, 22:10
@xGlumi

Das passiert jedoch nur bei 

summe += (double)item;
bei 
summe +=  Convert.ToDouble(item);
zumindest bei mir nicht
1
PeterFranz1234 
Fragesteller
 24.11.2015, 22:14
@PeterFranz1234

Wobei es eigentlich bei beiden funktionieren sollte keine Ahnung warum nur bei einem es erscheint mir recht unlogisch

0