Autor Beitrag
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
try
{
if(this.textBox1.Text == "0")
{
 //...
}
}
catch
{
retutn;
}


oder:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
string name
{
  get
{
return Name;
}
set;
}


oder im Letzten Beispiel:

ausblenden 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 user profile iconTh69: Topic aus Algorithmen, Optimierung und Assembler verschoben am Do 25.06.2015 um 20:53
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138
Erhaltene Danke: 21

Win 11 x64
C# (VS 2022 - Rider)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 25.06.15 20:00 
Hallo,
user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
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 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 30.06.15 20:22 
Und wir genau bekomme ich dann den Rückgabewert?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 30.06.15 20:40 
z.B. so:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Fr 03.07.15 23:07 
Und was bedeutet es, wenn nur
return true; da steht?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 04.07.15 00:17 
Dass der Wert "true" zurückgegeben wird :roll:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Fr 24.07.15 22:50 
Vielen Dank :)

Aber wo liegt hier der Fehler? return wird dabei rot unterstrichen:

ausblenden 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:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
private void button1_Click(object sender, EventArgs e)
        {
            MyFirstClass class1 = new MyFirstClass(1011);
            int x1 = class1.x;
            int abc = MyFirstClass(1011);
        }


Vielen Dank schonmal im Vorraus ;D
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
2:
3:
4:
public int x(int y)
{
return y * y;
}


Und dann zum Auslesen:
ausblenden 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#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: 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(1011);) 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:
ausblenden 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
private void button1_Click(object sender, EventArgs e)
{
  MyFirstClass class1 = new MyFirstClass(1011);
  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:
ausblenden 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(1011);
  int product = Product(1011);
}

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: 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
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.