2016-04-21 4 views
-2

Wenn ich so etwas wie haben:Wie kehre ich mehrere Strings aus einer Methode in C#

 static string characterName() 
    { 
     Console.Write("Name your character: "); 
     string name = Console.ReadLine(); 
     Console.Write("Is this correct? (Y/N): "); 
     string nameConfirm = Console.ReadLine(); 
     return nameConfirm; 
    } 

Wie kann ich das ändern, so gibt es sowohl nameConfirm und Namen. Die nameConfirm geht in:

 static string stageOne(string nameConfirm) 
    { 
     while (nameConfirm != "Y") 
      nameConfirm = Program.characterName(); 
     if (nameConfirm == "Y") 
     { 
      Console.WriteLine("Alright, lets continue."); 
      nameConfirm = Console.ReadLine(); 
     } 
     return nameConfirm; 

Das funktioniert gut, aber ich möchte später auf den Namen nennen können, wenn es gebraucht wird.

+3

Eine Möglichkeit besteht darin, die Rückgabe von 'string' statt' string', wie 'string []' oder 'List ' zu machen oder IEnumerable 'oder' Dictionary 'und so weiter ... Sie könnten auch' Tuple ' – Ian

+1

zurückgeben, das Sie eine String-Sammlung oder ein Objekt mit mehreren String-Eigenschaften oder ein Tupel oder verwenden können das 'out' Schlüsselwort und Funktionalität ... – user1666620

Antwort

0

Es gibt zwei Möglichkeiten, wie Sie dies tun könnten, die aren ‚t zu viel des Guten, die erste kann ein String-Array

static string[] characterName() 
{ 
    Console.Write("Name your character: "); 
    string name = Console.ReadLine(); 
    Console.Write("Is this correct? (Y/N): "); 
    string nameConfirm = Console.ReadLine(); 
    return new string[]{ nameConfirm, name }; 
} 

diese Aufgabe zurückzukehren ist dann wie

string[] names = characterName(); 
string runStageOne = stageOne(names[0]); 

die andere Art und Weise verwendet werden, so können Sie dies tun ist, um diezurückkehrenVariable und die name Variable als ref verwenden, so dass Ihre Methode

static string characterName(ref string name) 
{ 
    Console.Write("Name your character: "); 
    string name = Console.ReadLine(); 
    Console.Write("Is this correct? (Y/N): "); 
    string nameConfirm = Console.ReadLine(); 
    return nameConfirm; 
} 

ändern würde und wie

string name = ""; 
string nameConfirmed = characterName(ref name); 

Durch die Verwendung des Schlüsselwort ref auf dem Eingabeparameter aufgerufen werden, bedeutet dies, dass, wenn der Wert des Namens wird in der Methode geändert, diese Änderung wird auch außerhalb davon reflektiert.

+0

Ich verwende kaum Arrays nach der Einführung von 'List ' – TaW

0

Sie könnten eine Liste zurückkehren, eine Zeichenfolge [], oder eine Klasse definieren, um das Ergebnis des Verfahrens (dh mit zwei String-Objekten) zu repräsentieren ...

Verwandte Themen