c# Methode rückgabewert in Main weiterverwenden?

3 Antworten

Damit sollte es funktionieren:

public static void Main()
        {


            Console.WriteLine("Wilkomen bei der BH!");
            string name = "";
            string passwort = "";


            Abfrage(ref name, ref passwort);


            Console.Read();


        }
        private static void Abfrage(ref string name, ref string pwd)
        {
            Console.Write("\nBitte geben Sie ihren Benutzernamen ein: ");
            name = Console.ReadLine();


            Console.Write("\n\nBitte geben Sie ihr Passwort ein: ");
            pwd = Console.ReadLine();
        }

Schau dir die Grundlagen an, kauf dir ein Fachbuch zum Thema C#

hier ist eine Buchempfehlung von mir:

https://www.rheinwerk-verlag.de/c-sharp-8-mit-visual-studio-2019-das-umfassende-handbuch/?gclid=Cj0KCQiA-OeBBhDiARIsADyBcE5oynGyIAhSSNik4gQ02pd5Yf7DElVBf8UTnMl0sadeJUR1NVQ7mdkaAlO9EALw_wcB

ajn11 
Fragesteller
 27.02.2021, 12:56

alles gut, ich habe es mit nem Array hinbekommen ^^

0
Palladin007  27.02.2021, 15:57
@ajn11

Ein Array funktioniert zwar, ist auf Dauer aber eine sehr undurchsichtige Lösung.
Dann lieber eine Klasse (bzw. ein Objekt davon) verwenden und die Werte füllen, dann ist wenigstens klar, was für Werte es gibt.

0
Palladin007  27.02.2021, 15:56

BITTE kein "ref" empfehlen!!!
ref mag seinen Anwendungszweck haben, aber ohne zu wissen, was es tut und wann man es benutzen sollte, baut man sich damit sehr schnell sehr großes Chaos zusammen.

0
Mike0x07C9  27.02.2021, 16:00
@Palladin007

Das ist aber bei allen anderen Befehlen ebenso der Fall.

Schau dir seinen Code an er pack zwei Return Befehle in eine Funktion in der Hoffnung das er zwei Werte gleichzeitig zurückbekommt.

Da spielt es keine Rolle welchen Befehl man nicht richtig ausführt, entweder man kann programmieren oder nicht und wenn nicht sollte man bei den Grundlagen anfangen programmieren zu lernen.

Und ich empfehle was ich empfehlen will verbiete mir nicht mein Wissen zu teilen

0
Palladin007  27.02.2021, 16:15
@Mike0x07C9

Ich arbeite jetzt seit ein paar Jahren in diesem Umfeld und Du willst gar nicht wissen, wie viel fürchterlicher Code und dadurch begünstigte Fehler in kommerziellen Projekten auf genau solche "Empfehlungen" zurückgeht.

Immer wieder empfiehlt irgendewer irgendetwas, ohne genauer darauf einzugehen, der Leser weiß nicht, was dahinter steckt und nutzt es einfach, im Vertrauen, es sei eine gute Idee.
Dabei gibt es einige Dinge (wie z.B. ref), die sind fast immer eine ganz fürchterliche Idee.

Und ich verbiete es dir nicht, ich bitte dich darum, es nicht zu empfehlen. Es gibt einige bessere Wege, die hier viel eher angebracht wären. Wenn Du es unbedingt ansprechen willst, dann erkläre aber bitte auch bessere Alternativen und warum sie besser sind.

Das Problem an Platformen wie gutefrage.net ist, dass es so viele Leute gibt, die glauben, sie wüssten, wovon sie reden, sind meist aber kaum weiter, als derjenige, dem sie helfen wollen. Das ist nur eine Feststellung und keine Behauptung, dass Du dazu gehörst.

2
Mike0x07C9  27.02.2021, 16:35
@Palladin007

Du hast recht es gibt bessere Ansätze aber auch bei diesen Möglichkeiten gilt solange diese nicht richtig angewendet werden erfühlen diese auch nicht ihren Zweck.

Jedoch reicht das hier auf dieser Plattform nicht aus um jemandem die Kompletten Grundlagen zu erklären.

Und ich bin enttäuscht davon das es laut deiner Aussage so viele gibt die berufstätige Programmierer sind und mit so simplen Elementen nicht zurechtkommen.

Ich habe mir das Programmieren von 0 weg komplett eigenständig erlernt mit dem Sprachen C#, C++,Python und Java, ich habe mich soweit selbst entwickelt das ich nun berufstätig in einer renommierten Firma als Software Entwickler arbeite und du erzählst mir hier von Leuten die studierten und folge dessen nicht mit den Grundlagen umgehen können.

0
Palladin007  27.02.2021, 16:56
@Mike0x07C9
Du hast recht es gibt bessere Ansätze aber auch bei diesen Möglichkeiten gilt solange diese nicht richtig angewendet werden erfühlen diese auch nicht ihren Zweck.

Korrekt - aber warum dann einen Ansatz empfehlen, der weit mehr Fallstricke birgt, als den einfacheren Ansatz, der ganz nebenbei in den meisten Sprachen mit C-Syntax ziemlich ähnlich ist?

Und ich bin enttäuscht davon das es laut deiner Aussage so viele gibt die berufstätige Programmierer sind und mit so simplen Elementen nicht zurechtkommen.

Glaub mir: Das bin ich auch.

Ich habe allerdings keine Aussage zur Ausbildung der jeweiligen Entwickler getroffen. Das Problem ist weniger die möglicherweise unzureichende Ausbildung, sondern eher das fehlende Bewustsein für Code-Qualität und das Interesse, wie etwas funktioniert und was dahinter steckt.
Übrigens gibt's auch studierte Leute, denen einiges fehlt. Die Softwareentwicklung ist extrem vom eigenen Willen zur Weiterbildung abhängig, nach ein paar Jahen ist die ursprüngliche Ausbildung nahezu irrelevant - vorausgesetzt, man kann seine Eignung gut verkaufen.

Außerdem lernen viele dieses Berufsfeld ebenfalls auf eigene Faust im Internet. Manche nutzen Bücher, manche (richtige) Foren, Text- oder Video-Tutorials oder eben Platformen wie Diese.
Natürlich erwarte ich nicht, dass Du hier alle Grundlagen erklärt (das würde definitiv den Ramen sprengen), entsprechende Stichworte mit einer Empfehlung sind aber durchaus realistisch.

1
Mike0x07C9  27.02.2021, 17:03
@Palladin007

Ich weiß was du meinst und muss dir zustimmen, ein Copy by Referenz kann sehr schnell zu unerwarteten Fehlern führen.

Es ist wohl nicht ratsam einen blutigen Anfänger mit Techniken zu konfrontieren die weit über sein derzeitiges Verständnis liegt.

Danke, war eine nette Unterhaltung

1
Palladin007  27.02.2021, 17:14
@Mike0x07C9
Ich weiß was du meinst und muss dir zustimmen, ein Copy by Referenz kann sehr schnell zu unerwarteten Fehlern führen.

Eigentlich "pass by reference" ;) Da wird nichts kopiert - wobei eigentlich schon, aber eben nur die Referenz.
Das Interessante bei Klassen ist, dass hier sogar die Referenz als Referenz übergeben wird - ein Detail, über das viele stolpern.

Die größte Gefahr bei dem Ganzen sehe ich aber nicht im reinen Fehlerrisiko, sondern darin, dass der Code schnell sehr unübersichtlich wird. Man bekommt es zwar immer irgendwie ans Laufen, verliert über kurz oder lang aber die Kontrolle.
Ich "darf" derzeit an ein Projekten arbeiten, bei denen das extrem ist

2
string name = Abfrage();

Da hast Du dann aber nur den Namen drin, kein Passwort.

Du brauchst zwei Methoden oder ein Objekt mit Name- und Passwort-Properties, das Du dann füllen kannst.

Oder Du baust eine Methode, die generisch Daten abfragt und der Du per Parameter mitteilst, wonach sie fragen soll.

static void Main()
{
    string name = AskForInput("Gib Name ein");
    string password = AskForInput("Gib Passwort ein");
}

public static string AskForInput(string message)
{
    return Console.ReadLine(message);
}

Allerdings wäre da meine Frage: Wozu eine eigene Methode? :D

Oder Du nutzt ValueTuples, Array/Liste, ref/out-Parameter, Callback ... alles Möglichkeiten, die hier aber eher fehl am Platz sind.

Es gibt viele Wege zum Ziel, sie alle setzen aber voraus, dass Du die Grundlagen drauf hast, ansonsten hangelst Du dich nur von einer überflüssigen Frage zur Nächsten.
Für C# gibt's übrigens auch ein kostenloses Online-Buch, das ist zwar schon 9 Jahre alt, doch das taugt immer noch und alles, was neu ist, kann man sich danach gut selber aneignen.

https://mycsharp.de/forum/threads/78856/faq-wie-finde-ich-den-einstieg-in-csharp

Woher ich das weiß:Berufserfahrung

Nicht böse gemeint, aber du solltest dir vielleicht noch einmal die Grundlagen beim Programmieren anschauen.

Woher ich das weiß:Studium / Ausbildung
ajn11 
Fragesteller
 27.02.2021, 12:05

oder du könntest mir einfach sagen wie es geht... ich habe schon ein Buch bestellt für c# nur ich versuche gerade bisschen meinen Java Grundwissen anzuwenden..

0
xXbigdaddy5Xx  27.02.2021, 12:11
@ajn11

Hättest du auch nur annähernd Java-Grundwissen, oder generell Programmiert Grundwissen, wüsstest du was falsch ist. Aber gut, weise dich mal auf ein paar Fehler hin:

So wie die Abfragen Methode geschrieben ist, kann sie nicht funktionieren. Methoden werden nach einem return sofort beendet. Ich würde beide Variablen in einem Array, oder einer Map speichern und das dann zurückgeben.

Du kannst dann beide Variablen verwenden, indem du das Ergebnis der Methode ganz normal in einer Variable in der Main Methode speicherst und dann diese Variable weiterverwendet.

1
Palladin007  27.02.2021, 15:55
@ajn11

Das, woran es bei dir hapert, ist bei C# und Java so ziemlich identisch.

1