Entwickler-Ecke
C# - Die Sprache - Methodenaufruf von Console.Writeline mit Komma oder Plus....
goodandwealth - Mo 02.06.14 00:41
Titel: Methodenaufruf von Console.Writeline mit Komma oder Plus....
Hi there,
diese Zeile:
C#-Quelltext
1:
| Console.WriteLine("wight: " + ((Porsche)A).wight); |
zeigt das Gewicht, diese aber nicht:
C#-Quelltext
1:
| Console.WriteLine("wight: " , ((Porsche)A).wight); |
Jetzt ist plus und komma zwar nicht irgendwie verschieden, aber ich hätte doch mit einem error gerechnet,
wenn sich das nicht verträgt?
Warum kann der Methodenaufruf von writeline die 'Kommaform' zwar annehmen, aber zeigt kein Gewicht?
Man such sich zu tode, wenn man das versehentlich irgendwo einbaut.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| here the whole code:
public class Auto { }
public class Porsche: Auto { public int wight { get; set; } public Porsche() { this.wight = 10; } }
public class AnyObject { public void anyTask(Auto A) { if (A != null) { if (A is Auto) { Console.WriteLine("wight: " + ((Porsche)A).wight); } else Console.WriteLine("unknown type."); } } }
class Program { static void Main(string[] args) { Porsche p = new Porsche(); Auto a = p; AnyObject myOb = new AnyObject(); myOb.anyTask(p); Console.ReadLine(); } } |
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Moderiert von
Christian S.: C#-Tags hinzugefügt
Palladin007 - Mo 02.06.14 01:27
Zitat: |
Jetzt ist plus und komma zwar nicht irgendwie verschieden |
Das ist beides in himmelweiter Unterschied - zumindest in C#
Das + ist ein Operator, den du sogar überladen kannst. Bei Zahlen addiert er, bei Strings fügt er Diese zusammen.
Was genau passiert, hängt davon ab, in welchem Zusammenhang der Operator verwendet wird. Wenn es mal nicht eindeutig sein sollte: Auf der MSDN-Doku gibt es garantiert ausreichend Informationen für diesen konkreten Fall, wenn er im .Net-Framework enthalten ist.
Hier [
http://msdn.microsoft.com/de-de/library/6a71f45d.aspxl] findest du eine Liste der Operatoren. Unten bei den Referenzen findest du auch einen kurzen Artikel zu überladbare Operatoren.
Das Komma ist kein Operator, es trennt zwei Dinge voneinander, in diesem Fall die Parameter.
WriteLine nutzt intern die
string.Format [
http://msdn.microsoft.com/de-de/library/fht0f5be%28v=vs.110%29.aspx]-Methode, der an erster Stelle der Format-String und danach beliebig viele Parameter übergeben werden, die dann die vordefinierten Platzhalter im Format-String ersetzen.
Ich weiß nicht, ob string.Format bei zu vielen Parametern eine Exception wird, aber ich vermute eher nicht, weil das für die Methode ja keine Ausnahme darstellt. Der eine Parameter wird also einfach ignoriert, weil im Format-String vorher keine Position für diesen Parameter angegeben wurde.
Richtig wäre es so:
C#-Quelltext
1:
| Console.WriteLine("wight: {0}" , ((Porsche)A).wight); |
Das lässt sich aber auch mit etwas Zeit und Google lösen, du musst nur nach der Methoden-Definition suchen, die du siehst, wenn du in Visual Studio mit der Maus über den Methoden-Namen fährst.
goodandwealth - Mo 02.06.14 21:49
Palladin007 hat folgendes geschrieben : |
Zitat: | Jetzt ist plus und komma zwar nicht irgendwie verschieden |
Richtig wäre es so:
C#-Quelltext 1:
| Console.WriteLine("wight: {0}" , ((Porsche)A).wight); |
|
Wie? Richtig? unter welchem Aspeckt denn?
Hast du nur die Betreffzeile gelesen?
Diese Zeile:
C#-Quelltext
1:
| Console.WriteLine("wight: {0}" , ((Porsche)A).wight); |
stand schon oben in meiner Frage.
Wenn es dir wehtun würde würde ich jetz in meinen Monito reinschlagen.
Deien Antwort ist nichts weiter als grosskozerei
Palladin007 - Mo 02.06.14 22:12
Du hast folgendes geschrieben:
goodandwealth hat folgendes geschrieben : |
diese Zeile: C#-Quelltext 1:
| Console.WriteLine("wight: " + ((Porsche)A).wight); | zeigt das Gewicht, diese aber nicht:
C#-Quelltext 1:
| Console.WriteLine("wight: " , ((Porsche)A).wight); | |
Console.WriteLine(
"wight: " + ((Porsche)A).wight);
Console.WriteLine(
"wight: " , ((Porsche)A).wight);
So viel zum Thema Großkozerei!
Ralf Jansen - Mo 02.06.14 22:24
Zitat: |
Wenn es dir wehtun würde würde ich jetz in meinen Monito reinschlagen.
Deien Antwort ist nichts weiter als grosskozerei |
Eine extrem intelligentes Vorgehen wenn man Hilfe sucht.
Das motiviert extrem es nochmal mit anderen Worten zu versuchen. :roll:
Yankyy02 - Mo 02.06.14 22:30
Will ja kein Diethylether ins Feuer gießen aber 3 Post's und schon die Community gegen sich klingt Rekord verdächtig.
Palladin007 - Mo 02.06.14 22:41
@Yankyy:
Wenn du lange genug auf Foren unterwegs bist, siehst du, dass es immer wieder so Leute gibt. ^^
Es kommt aber auch vor, dass so ein "Streit" auf ein Missverständnis beruht, schließlich ist seine Antwort und auch das, was er im Start-Beitrag geschrieben hat, schlicht falsch.
Von daher würde ich ihm auch weiterhin helfen, voraus gesetzt, er stellt eine vernünftige Frage und ist in der Lage, die Hilfe, die ihm geboten wird, anzunehmen.
Yankyy02 - Mo 02.06.14 22:51
@Palladin007,
dir gilt meines Erachtens nach besonderer Respekt denn wenn mir jemand mehr oder weniger mit Schläge droht
Zitat: |
Wenn es dir wehtun würde würde ich jetzt in meinen Monitor reinschlagen. |
sinkt meine Hilfsbereitschaft rapide auf null. oder anders ausgedrückt
C#-Quelltext
1: 2: 3: 4:
| if(aggressiv) { motivation = null; } |
Aber ich finde es gut dass es auch noch Leute wie dich gibt die dass entspannt nehmen und sich davon nicht abhalten lassen weiterhin Unterstützung bei jedem noch so trivial wirkendem Problem zu geben!
Christian S. - Mo 02.06.14 23:17
Ich denke, hier ist alles gesagt, daher mache ich mal zu.
@goodandwealth: Dein Verhalten ist völlig inakzeptabel und wird beim nächsten Mal auch nicht mehr toleriert werden. Überlege mal bitte, wer hier von wem Hilfe will und wer mal ein bisschen Dankbarkeit zeigen könnte. Palladin007 hat Dir eine korrekte, fundierte und ausführliche Antwort gegeben. Lesen musst Du sie dann schon noch richtig ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!