2017-10-09 1 views
0

Ich schreibe ein sehr einfaches C# -Programm, das mit Listen arbeitet.Verwenden von globalen Variablen in statischen Lücken - C#

Ich schreibe eine Methode, die eine Liste in Reihenfolge sortiert und dann schreibt das Ergebnis aus zu einem Textfeld eine globale Variable.

ich Methode wollen jedoch eine statische Leere zu sein, diese Fehler führt.

Derzeit sieht es wie folgt aus:

public void sort(List<int> value) 
{ 
    value.Sort(); 
    foreach (int item in value) 
    { 
     result = result + item; 
    } 
} 

ich dies möchte eine statische Leere jedoch wie folgt:

public static void sort(List<double> value) 

Irgendwelche Tipps geschätzt.

+0

Sie können entweder 'result' statisch machen oder es zu einem Parameter der Methode machen. Zusätzlich können Sie 'value.Sum()' ausführen, um das zu erreichen, was Sie tun. – Aybe

+0

Warum müssen Sie eine globale Variable verwenden? Was ist falsch daran, 'result' local zu machen und es von' sort' zurückzusenden? Dadurch erhalten Sie auch die Möglichkeit, "Sortieren" in einen Namen zu ändern, der angibt, was es tatsächlich tut. –

+0

Ich habe die öffentliche statische void sort (Liste value) Zeile, so dass es diesem Format folgen muss. – benjano

Antwort

3

eine globale Variable innerhalb einer Methode ist keine gute Praxis und ist ratsam, wenn es unbedingt notwendig zu vermeiden. Wenn Sie diese Methode in ein anderes Modul transportieren, funktioniert sie nicht mehr, wenn Sie eine globale Variable verwenden.

Wenn Sie Ihre Methode betrachten, sortieren Sie einfach eine Liste und addieren die Werte. So etwas tun:

public static int sort(List<int> value) 
{ 
    int result; 
    value.Sort(); 
    foreach (int item in value) 
    { 
     result = result + item; 
    } 
    return result; 
} 

Mit LINQ;

public static int sort(List<int> value) 
{ 
    value.Sort(); 
    return value.Sum(); 
} 

Wenn der Rückgabetyp void sein 'müssen', verwenden Sie einen out Parameter.

public static void sort(List<int> value, out int result) 
{ 
    value.Sort(); 
    result = value.Sum(); 
} 
Verwandte Themen