Die übergabe-Liste<Klasse> als argument, C#, mithilfe von "ref" - Schlüsselwort

Freunde!

Also ich Schreibe ein einfaches Programm. Im Grunde genommen habe ich eine Klasse (3 Streicher, 1 int, einige Methoden). Ich bin initialisieren der Werte von Objekten dieser Klasse aus einer text-Datei. Ich bin mit der Liste für dieses.
Das problem ist, dass die Initialisierung ist eine separate Funktion. Ich hatte die Liste SOWOHL deklariert UND initialisiert, in dieser Funktion. Aber ich könnte es brauchen in anderen Funktionen, einschließlich " - Programm.Main".

Sollte ich eine "Globale" Klasse und einem public List< Klasse > ? Beschloss ich, einfach zu erklären, es in mein Programm.Main-Funktion wie jetzt. Allerdings bin ich mir nicht sicher, ob eine Liste übergeben, by value oder by-reference. Ich fand eine Seite im Internet, die vermuten lässt, mit ref - Schlüsselwort. Nun habe ich:

public Class FooClass
{...}

class Program
{
    static void Main(string[] args)
    {
      List<FooClass> fooDB = new List<FooClass>;
      initFromFile(ref fooDB);
    }

    private static initFromFile(ref List<FooClass> fooDB)
    {
       using (StreamReader ... )
       {
          while( ... )
          {
             ...
             fooDB.Add(new FooClass(args))
          }
       }
     }//initFromFile

}//Program

Soll ich so weitermachen wie dieser? Oder gibt es irgendwelche entscheidenden Anregungen? Vielleicht ist "ref", ist nicht eine gute Praxis auf allen?

TLDR: Sollte ich eine Globale Liste oder übergeben Sie es als Referenz oder auf andere Weise(vorschlagen). Wenn durch Verweis übergeben wird, dann soll ich eine ref - Schlüsselwort oder gibt es einen anderen Weg?

Vielen Dank im Voraus,

~~~hlfrmn

  • Was auch immer Seite, die Sie gefunden, dass ist völlig falsch und sollte ignoriert werden.
  • Warum sind Sie sogar mit ref es gibt keinen Grund, aus dem code, den Sie gezeigt. Würden Sie nur benötigen, um ein ref wenn Sie hatte fooDB = Somthing; in Ihrem initFromFile Funktion.
  • yoda.arachsys.com/csharp/parameters.html
  • D Stanley ' s Antwort ist richtig und ich möchte nur hinzufügen, dass zu beantworten, den anderen Teil deiner Frage, Nein, Sie sollten nicht in einer globalen Liste. c2.com/cgi/wiki?GlobalVariablesAreBad
  • Es ist einfach nur dumm mich. Schnell gegoogelt "c# - pass-argument by reference", sah "ref" und nur der Eingabe sofort. Der Artikel hatte nur Beispiele mit INT.
  • Ja, ich wusste wirklich nicht wollen, um einen globalen, das ist vor allem, warum ich fragte, ob die "in-Main-Erklärung" war in Ordnung. Danke für den link.

InformationsquelleAutor hlfrmn | 2014-01-08
Schreibe einen Kommentar