Ich habe eine Funktion, die einen String-Wert zurückgibt. Wie unten zu sehen ist, füllt es eine Liste und findet dann den längsten Wert in dieser Liste und gibt es zurück.Rückgabewert der C# -Funktion innerhalb einer if-Anweisung
public static string myFunction(string str)
{
for (blah str)
{
myList.Add(someString);
}
string longest = myList[0];
foreach (string s in myList)
{
if (s.Length > longest.Length)
{
longest = s;
}
}
return longest;
}
Ich bemerkte, dass, wenn meine Liste nicht gefüllt ist bekam, habe ich eine Fehlermeldung erhalten, wenn die Liste leer ist zu prüfen, um eine Bedingung hinzuzufügen, so entschieden. Aber das Hinzufügen der if-Anweisung, um dies zu überprüfen, führt dazu, dass der Rückgabewert außerhalb des Gültigkeitsbereichs liegt.
Wie kann ich dies beheben, ohne eine andere Variable zu deklarieren?
Ich frage mich auch, wie man S-String zurückgibt, wenn Sie die erforderliche Zeichenfolge und -1 gefunden, wenn Sie es nicht gefunden haben? Ich weiß, dass der Rückgabetyp einer Funktion nur eine Sache sein kann, aber wenn meine Funktion -1 zurückgeben muss, wenn sie die erforderliche Zeichenfolge nicht findet, wie mache ich das?
EDIT: gelöst, zum einen durch die folgende Zugabe als ich die Liste bin erklärt (und nicht in der if
Aussage mit myList[0]
erklärt, die mein großer Fehler war):
List<string> myList = new List<string>() {""};
Zweitens für verschiedene Rückgabetypen (was einfach Programmieranforderung ist) Ich erkläre einen Rückgabetyp, um die string
oder -1
für Rückgabewert zu erreichen.
ein anderes EDIT: Die mitgelieferte Antwort auf diese Frage ist auch korrekt (die ich so markiert habe), obwohl es ein anderes Paradigma verwendet, das derzeit nicht mein Fokus ist.
Verschieben Sie die Deklaration ('string longest ....;') bis kurz vor Ihr 'if'. Initialisiere auf null oder leer anstelle von 'myList [0]'. –
Was möchten Sie zurückgeben, wenn die Liste leer ist? – Lee
@Lee: Ich sollte die längste Zeichenfolge zurückgeben, wenn sie existiert, oder wenn leer, sollte ich '-1' zurückgeben, aber keine Ahnung, wie das geht. Also dachte ich zuerst, dass ich mich mit dem Ziel befassen werde, und dann werde ich mich um diesen Teil kümmern. Irgendwelche Ideen, wie man das macht? – Joshua