C# Der +- Operator kann nicht auf Operanden vom Typ "Methodengruppe" und "string" angewendet werden?

C# Fehler Jpeg - (programmieren, Informatik, C Sharp)

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Den Unterschied zwischen einem double (also einer Fließkommazahl) und einem string (also einer Zeichenkette) kennst du? Wenn nicht, dann hol das nach, das ist wichtig. Wenn wir die kaputte Zeile mal zerpfücken:

double w1 = 


du willst in der Variablen w1 einen double haben.

Math.Round(bytesmb, 2)


Math.round gibt dir auch tatsächlich einen Double - also eine Zahl zurück. https://msdn.microsoft.com/de-de/library/75ks3aby(v=vs.110).aspx

.ToString


gibt dir eine Methode (in C#-Sprech "Methodengruppe") zurück - denn es fehlen die Klammern. Wenn du den String-Wert von der gerundeteten bytesmb haben möchtest, dann müsste es also

double w1 = Math.Round(bytesmb, 2).ToString()


lauten. Das + " MB / " + hängt an den ersten String einen weiteren String an und im hinteren Teil der Zeile hast du auch wieder Klammern vergessen. Wenn du die Klammern setzt, dann hast du die Fehlermeldung behoben, aber wahrscheinlich einen neuen Fehler.

Denn in der Zeile erzeugst du einen String und willst den in die double-Variable w1 speichern - das passt nicht. Ob w1 eigentlich ein String oder ein Double sein sollte, kann man aus deinem Quelltext nicht herauslesen, ich würde aber mal auf Ersteres tippen.

Und nebenbei: "w1" ist ein recht unglücklich gewählter Variablenname.

HardwareTester 
Fragesteller
 19.09.2017, 20:05

Vielen dank für dein Kommentar :) !

Ich habe das Problem bereits selbst gelöst. Ich hatte es einmal mit den Variablen ausprobiert, was zum gleichen Ergebnis geführt hat.

Also habe ich stattdessen direkt meinem Label1.Text den Code:

Label1.Text = Math.Round(bytesmb, 2) + " MB / " + Math.Round(totalmb, 2) + " MB";

gegeben und siehe da, es funktioniert! Ich hatte es ein bisschen anders im Kopf, weil ich gerade von VB umsteige ^^

Trotzdem großen dank!

0
HardwareTester 
Fragesteller
 19.09.2017, 20:09
@HardwareTester

EDIT:

Ich hatte es wie du vorgeschlagen hast auch ausprobiert, es führte zum gleichen Ergebnis. Mich kannst du ruhig mit dem "Next Level Sh*t" (also direkt zum Punkt) belabern, sollte ich noch größten Teils verstehen. Die Datentypen kenne ich alle und kann auch sagen für was diese gut sind :P  <3

0

Die Datentypen gibt es nur deshalb, weil es unterschiedliche Daten gibt, die auch unterschiedlich behandelt werden. So kannst Du z.B. eine Zahl mit einem Vorzeichen (+/-) versehen oder arithmetisch verknüpfen, einen Text nicht. Dafür kannst bei einem text z.B. aus Kleibuchstaben große machen oder Prüfen, ob eine bestimmte Zeichenfolge drin enthalten ist.

Datentypen gibt es in fast allen Programmier- und auch Datenbanksprachen wie SQL, also ganz allgemein in der Datenverarbeitung, nicht nur in C#.

Ein Rätsel ist für mich, warum Du einen Text mit einem Vorzeichen versehen wolltest?

HardwareTester 
Fragesteller
 24.09.2017, 11:17

Vorzeichen nicht direkt. Ich vermute mal, das er alle zahlen über -0 automatisch den vorzeichen + gibt (Klingt für mich so logisch)

Das ist mir aber auch egal, weil ich dies sowieso in string umwandeln wollte. Ich habe das Problem mittlerweile auch gelöst.

PS: Du solltest wissen, das ich von deinem Kommentar gegen ende ca. nur jedes zweite Wort verstanden habe.

0

Du kannst nem double keine string were andrehen. Das ist als ob du in deinen tank pinkeln würdest und damit fahren willst

HardwareTester 
Fragesteller
 24.09.2017, 11:10

Ich kann deinen Rat nur schlecht weiterfolgen, weil ich die double werte bewusst in string umgewandelt habe. Stichwort: .ToString()

0
Kieselsaeure  24.09.2017, 12:10
@HardwareTester

schau dir mal diese zeile an:

double w1 = Math.Round(bytesmb, 2).ToString + " MB / " + Math.Round(totalmb, 2).ToString + " MB";

da hast du 1. die () vergessen und 2. versuchst du double nen string anzudrehen. also ja du wandelst das zum string um aber das kannst du dennoch keiner double variable andrehen. es sind einfach andere datentypen.

0