Zugriff auf variable außerhalb der for-Schleife
wie Sie auf eine Zeichenfolge zugewiesen, einige Wert in einer for-Schleife, außerhalb der for Schleife
ich kann Ihnen den code für deine Bequemlichkeit
for (Int32 i = 0; i < yourlist.Count; i++)
{
String str=(yourlist[i].ToString() + ",");
}
String str1 = (str).Substring(0, str.Length - 1);
der Fehler angezeigt wird
Dem Namen 'str' existiert nicht im aktuellen Kontext
- Sie können hinzufügen, ein tag '- variable scoping " oder ähnliches. Oder google nach diesem Begriff.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Gültigkeitsbereich der Variablen erstreckt sich nicht auf außerhalb der Schleife. Wenn Sie möchten, um Zugriff auf dessen Wert, müssen Sie es speichern in eine andere variable mit einem größeren Umfang, wie diese:
Jedoch, was Sie versuchen zu tun, kann einfach als:
Select
oder benötigen Sie auch eineToArray()
.or
? Nicht er braucht beideSelect()
undToArray()
?Join
dauert nur ein array. In .Net 4.0, es dauert auch eineIEnumerable<T>
und fordertToString()
für Sie. msdn.microsoft.com/en-us/library/dd992421.aspxWenn Sie deklarieren Sie eine variable innerhalb einer
for
Schleife (oder jedem anderen Bereich), es existiert nicht außerhalb dieses Bereichs.Sie müssen deklarieren Sie die variable außerhalb der Schleife.
Beachten Sie, dass diese nicht tun, was Sie wollen, es zu tun, da Sie nicht anfügen der Zeichenfolge.
Verwenden Sie stattdessen einen StringBuilder.
Sie können machen es etwas einfacher, indem nur anfügen
", "
wenni > 0
.In .Net 4.0, können Sie ersetzen Sie Ihre gesamte Schleife mit einer neue überladung des
- String.Join
:Bevor .Net 4.0, können Sie ersetzen Sie es mit
Auch möchten Sie vielleicht zu speichern das Ergebnis zurück an variable str
In diesem Fall brauchen Sie nicht zu erklären, eine weitere variable
Deklarieren Sie die variable str, bevor die Schleife beginnt.da die variable str erklärt, innerhalb der for-Schleife geht out of scope ist und somit ein Fehler in der Zusammenstellung.
Aber der bessere Weg, um dieser code zu schreiben ist:
Obwohl "str" und "str1" sind wirklich schlechte Namen für Variablen. Sie bedeuten nichts. Ein Variablen-Namen sollten einen Hinweis, was diese variable speichert, und nicht deren Datentyp.
String.Mitmachen ist das, was Sie wollen. Sie nicht haben, um eine Schleife verwenden.
String.Join
. Außerdem funktioniert das nur mit .Net 4.0. Siehe meine Antwort.Versuchen Sie den folgenden code: