Eine Klasse ruft eine Methode in einer anderen Datei auf

galaya

Grünschnabel
Hallo zusammen

Ich habe gerade mit dem Programmieren angefangen und habe mich dabei für C# entschieden.
Ich habe diverse Bücher wie „C# von Kopf bis Fuss“ und „Visual C# 2010 von Andreas Kühnel“ zur Hand.
Bis jetzt kam ich gut voran, stecke jetzt aber gerade etwas fest.
Es geht dabei um folgendes:
Man musste im Projekt eine neue Klasse in der Datei Redner.cs mit folgendem Code erstellen:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Kapitel_3_vkbf_Seite_89
{
class Redner
{
public static int BlahBlahBlah(string aussage, int wieOft)
{
string ergebnisString = "";
for (int zähler = 1; zähler <= wieOft; zähler++)
{
ergebnisString = ergebnisString + aussage + "\n";
}
MessageBox.Show(ergebnisString);
return ergebnisString.Length;
}
}
}

Dann musste man ein Formular in der Datei Form1.cs mit folgendem Code entwerfen:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Kapitel_3_vkbf_Seite_89
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void label1_Click(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
int len = Redner.BlahBlahBlah(textBox1.Text, (int) numericUpDown1.Value);
MessageBox.Show("Die Länge der Nachricht ist " + len);
}
}
}

Der Parameter mit dem String Wert textBox1.Text enthält einen Wert den man auf dem Formular im Textfeld eingeben kann und der Parameter mit dem int Wert numericUPDown1.Value enthält einen Wert der angibt wie oft das Programm den Text in der TextBox1 wiederholen soll.
Die Methode BlahBlahBlah in der Datei Redner.cs gibt dann eine Mesage Box aus mit dem wiederholten Text und liefert dabei einen Rückgabewert an die Methode zurück der angiebt wie lange der ganze Text war. Die Messagebox mit der Länge des gesamten Text wird dann mittels MessageBox.Show("Die Länge der Nachricht ist " + len); ausgegeben.

Meine Problemstellung zu der ich keine Hilfe gefunden habe lautet nun wie folgt:
String aussage und int wieOft beziehen sich auf die Parameter textBox1.Text und (int) numericUpDown1.Value.
Ich kann aber nicht erkennen wie die Zuweisung gemacht wurde. Wie weiss string aussage dass es hierzu den Wert der TextBox1.Text nehmen soll und int wieOft den Wert aus numericUPDown1.Value?

Des Weiteren noch eine Anschluss Frage: Warum steht bei „int len = Redner.BlahBlahBlah(textBox1.Text, (int) numericUpDown1.Value); „ INT in einer zusätzlichen Klammer?

Ich hoffe ich darf hier Anfängerfragen posten und vielleicht kann mir ja jemand weiterhelfen.
 
Hallo galaya,

Beim Aufruf einer Methode geschieht anschaulich gesagt folgendes:
Die Parameter, die du an die Funktion übergibst werden kopiert und in die Variabeln in der Methode kopiert. In deinem Fall wird also der Inhalt von textBox1.Text in die Variable aussage kopiert und das selbe mit dem zweiten Parameter.

Zu deiner zweiten Frage:
numericUpDown1.Value ist vom Typ System.Decimal und nicht int. Es ist jedoch möglich eine Variable vom Typ System.Decimal in einen int umzuwandeln. Das musst du aber dann entsprechend angeben.

Gruss
Muepe
 
ok vielen Dank.
Erfolgt dann das kopieren einfach anhand der Position(1. Parameter wird an den 1. Parameter der anderen Mehtode übergeben usw.) oder nach einer anderen Logik?
 
Genau, die Parameter werden in der Reihenfolge an die Methode übergeben in der du sie auch angibst. Und du musst sie dann natürlich auch in der Reihenfolge angeben in der du sie in der Methode deklariert hast.
 

Neue Beiträge

Zurück