Autor |
Beitrag |
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Do 25.06.15 19:49
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
|
|
Yankyy02
Beiträge: 138
Erhaltene Danke: 21
Win 11 x64
C# (VS 2022 - Rider)
|
Verfasst: Do 25.06.15 20:00
Hallo Csharp-programmierer,
Ich glaube dieser openbook.rheinwerk-v...8d-a170-dd3e640b1b66 Link sollte alles erklären.
LG
_________________ the quiter you become, the more you are able to hear
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: 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.
Return beendet die Funktion und gibt evtl. die nachfolgende Variable als Wert zurück.
siehe auch msdn.microsoft.com/d...ibrary/1h3swy84.aspx
Beste Grüße
Mathematiker
Mist! Sekunden zu spät. Ich wollte doch der Erste sein.
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 25.06.15 21:02
Ich habe schon befürchtet, dass www.uni-trier.de/fil...harp/v40/csharp4.pdf nicht mehr funktioniert...
Einführung in das Programmieren mit C# 4.0, 751 Seiten...
Insgesamt 197 Instances of Return:
Seite 75:
Seite 167: Return
u.s.w.
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Di 30.06.15 20:22
Und wir genau bekomme ich dann den Rückgabewert?
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: 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.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
OlafSt
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: 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.
_________________ Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: Fr 03.07.15 23:07
Und was bedeutet es, wenn nur
return true; da steht?
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 04.07.15 00:17
Dass der Wert "true" zurückgegeben wird
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: 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
Beiträge: 4701
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: 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
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: 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#
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: 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); } |
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
Csharp-programmierer
Beiträge: 696
Erhaltene Danke: 10
Windows 8.1
C# (VS 2013)
|
Verfasst: 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
|
|
Th69
Beiträge: 4764
Erhaltene Danke: 1052
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 25.07.15 11:16
Hallo,
die Grundlagen der C#-Programmierung solltest du dir schon selbst beibringen, z.B. über ein (Online-)Buch wie Visual C# 2012. Und deine letzte Frage solltest du durch Lesen des Kapitels 3 Das Klassendesign ff. dann beantworten können. Bei Detailfragen dazu erstelle aber bitte ein neues Thema.
|
|