Entwickler-Ecke
C# - Die Sprache - Was bedeutet das Schlüsselwort RETURN?
Csharp-programmierer - Do 25.06.15 19:49
Titel: Was bedeutet das Schlüsselwort RETURN?
Hallo Leute. Mir begegnet sehr oft das Schlüsselwort "return" und ich weiß überhaupt nich, was dies bedeutet. z.B. in folgenden Beispielen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| try { if(this.textBox1.Text == "0") { } } catch { retutn; } |
oder:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| string name { get { return Name; } set; } |
oder im Letzten Beispiel:
C#-Quelltext
1: 2: 3: 4: 5:
| if(variable1.IndexOf("H") == -1) { this.BackColor = Color.Red; return variable2; } |
Könntet ihr das vielleicht einmal zusammenfassen, was return bewirkt;
MFG :)
Moderiert von Th69: Topic aus Algorithmen, Optimierung und Assembler verschoben am Do 25.06.2015 um 20:53
Mathematiker - Do 25.06.15 20:00
Hallo,
Csharp-programmierer hat folgendes geschrieben : |
Könntet ihr das vielleicht einmal zusammenfassen, was return bewirkt; |
Super. Obwohl ich von C# keine Ahnung habe, weiß ich dieses Mal etwas. :lol:
Return beendet die Funktion und gibt evtl. die nachfolgende Variable als Wert zurück.
siehe auch
https://msdn.microsoft.com/de-de/library/1h3swy84.aspx
Beste Grüße
Mathematiker
Mist! Sekunden zu spät. Ich wollte doch der Erste sein. :(
Csharp-programmierer - Di 30.06.15 20:22
Und wir genau bekomme ich dann den Rückgabewert?
Christian S. - Di 30.06.15 20:40
z.B. so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public int Square(int x) { return x*x; }
int foo = 4; int fooQuadrat = Square(foo); |
Oben ist eine Funktion (Square) definiert, die das Quadrat einer Zahl zurückgibt. Unten wird diese Funktion aufgerufen und der Rückgabewert wird der Variable "fooQuadrat" zugewiesen, um weiter benutzt zu werden.
Csharp-programmierer - Do 02.07.15 20:29
Vielen Dank für die hilfreichen Antworten, aber was bedeutet es, wenn einfach nur return; da steht?
MFG :)
Christian S. - Do 02.07.15 20:50
Dann hat die Methode keinen Rückgabewert (ansonsten würde der Compiler ein "return" ohne Wert nicht akzeptieren) und wird einfach nur sofort an der Stelle verlassen.
OlafSt - Fr 03.07.15 12:28
Manchmal scheint es echt schwierig zu sein, den Cursor auf das Wort "return" zu stellen und F1 zu drücken...
No offense.
Csharp-programmierer - Fr 03.07.15 23:07
Und was bedeutet es, wenn nur
return true; da steht?
Christian S. - Sa 04.07.15 00:17
Dass der Wert "true" zurückgegeben wird :roll:
Csharp-programmierer - Fr 24.07.15 22:50
Vielen Dank :)
Aber wo liegt hier der Fehler? return wird dabei rot unterstrichen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| class MyFirstClass { public int x { get; set; } public int y { get; set; }
public MyFirstClass(int xx, int yy) { this.x = xx; this.y = yy;
return (xx * yy); } } |
Und dann:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void button1_Click(object sender, EventArgs e) { MyFirstClass class1 = new MyFirstClass(10, 11); int x1 = class1.x; int abc = MyFirstClass(10, 11); } |
Vielen Dank schonmal im Vorraus ;D
Ralf Jansen - Fr 24.07.15 23:00
Das ist ein Konstruktor und keine Methode wie jede andere. Wie du dem Syntax des Konstruktor ansiehst hat die keinen Return Typ (vor dem Namen der Konstruktormethode der gleich dem Klassenname ist steht ja nix). Der Return Typ des Konstruktor ist die Klasse die es erzeugt hier implizit eine Instanz der Klasse MyFirstClass. Darum funktioniert die erste Zeile in deinem button1_Click Handler. Im Konstruktor sieht man üblicherweise nie einen return und wenn dann ohne Typ (den wie gesagt der Typ steht schon fest und muss nicht mehr genannt werden).
Wie du darauf kommst das die 3.te Zeile in button1_Click irgendwie Sinn macht erschließt sich mir nicht. Vielleicht kann mann dir da helfen wenn du uns mal erklärst warum du denkst das das so gehen müsste. Vielleicht erkennen wir dann denn Denkfehler in deinem Metamodel.
Csharp-programmierer - Fr 24.07.15 23:27
Ich kam wegen der 3. Zeile so drauf:
Ein Vorgänger, der auf diese gesamte Frage geantwortet hat hat ein Beispiel gemacht:
C#-Quelltext
1: 2: 3: 4:
| public int x(int y) { return y * y; } |
Und dann zum Auslesen:
C#-Quelltext
1: 2:
| int a = 4; int Quadrat = x(a); |
Und so wird halt das Quadrat der Zahl gebildet.
Da ich mich absolut noch nie mit Klassen beschäftigt (gescheige dem Vererbung) habe, ist es nun höchste Zeit dafür. Ich dachte, es wäre ein schönes Beispiel um damit anzufangen. Ich dachte wenn ich ich gebe dem einen Parameter 10 und dem anderen 11, damit sich dann die beiden Zahlen addieren und ich so an das Ergebnis rabkomme. Leider funktioniert das in der Praxis jedoch nicht.
Leider verstehe ich auch Ihre Formulierung nicht (wegen der Fachsprache). Könnten Sie mir vielleicht einen Codeausschnitt für dieses Problem geben?
MFG ;)
C# - Sa 25.07.15 02:00
Hallo,
der Konstruktor ist zum erstellen von Objekten da. Wenn ein neues Objekt erzeugt wird (z.B.
MyFirstClass class1 = new MyFirstClass(10, 11);) dann wird genau hier die Konstruktorfunktion
public MyFirstClass(int xx, int yy) aufgerufen. Diese ist aber dafür da, um Variablen und Co. in dem Objekt selber zu initialisieren. Wenn du nun mit der Klasse was berechnen willst musst du dafür Methoden definieren:
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:
| class MyFirstClass { public int x { get; set; } public int y { get; set; }
public MyFirstClass(int xx, int yy) { this.x = xx; this.y = yy;
return (xx * yy); } public int Sum() { return x + y; } public int Product() { return x * y; } } |
und aufrufen kannst du sie dann (z.B. in deiner Button-Methode) so:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void button1_Click(object sender, EventArgs e) { MyFirstClass class1 = new MyFirstClass(10, 11); int sum = class1.Sum(); int product = class1.Product(); } |
Wirklich Sinn machen tut die Klasse in diesem Fall natürlich nicht, da man auch einfache Funktionen schreiben kann und keine Klasse dafür schreiben muss:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| public int Sum(int x, int y) { return x + y; }
public int Product(int x, int y) { return x * y; }
private void button1_Click(object sender, EventArgs e) { int sum = Sum(10, 11); int product = Product(10, 11); } |
Csharp-programmierer - Sa 25.07.15 09:55
Vielen Vielen Dank für Ihre sehr hilfreiche Antwort. Eine Frage habe ich jedoch noch: Was ist dann jetzt eigenrlich der Sinn von Klassen?
MFG :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 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!