Wann müssen wir ein Objekt mit "neu" erstellen und wann können wir ihm einfach einen Wert zuweisen und zuweisen? - c #

Genauer gesagt in einer LINQ to Entities-Abfrage:

List<string> myResult = (from myTable do some joins...blah).ToList();
if(myResuly.Any())
{
// Foo
}

Meine Frage ist, woher wir wissen, ob wir es benutzen können

List<string> myResult = (from myTable do some joins...blah).ToList();

oder wir sollten verwenden:

List<string> myResult = new List<string>();
myResult = (from myTable do some joins...blah).ToList();

Antworten:

2 für die Antwort № 1

Wenn es eine Funktion auf der rechten Seite der = das erzeugt den Wert, den du nicht brauchst new. In Ihrem 3. Beispiel, die Liste Sie new wird sofort weggeworfen und der von ToList () zurückgegebene wird an seiner Stelle verwendet


1 für die Antwort № 2

Wenn Sie die Liste bereits erhalten können, warum verschwenden Sie eine zusätzliche Codezeile?

List<string> myResult = new List<string>();

Die Idee, Ihre Liste zu initialisieren, besteht darin, dass Sie noch keine haben, die Sie in "myResult" auflisten können.

Stellen Sie sich vor, Sie möchten auf Ihre Liste zugreifen, die Sie noch nicht initialisiert haben.


1 für die Antwort № 3

Wir sollten benutze niemals (obwohl es ist sicher) der Code so:

  List<string> myResult = new List<string>();
myResult = ... // myResult is reassinged here and "new List<string>()" just lost

da du gerade erstellst nutzlos List<string> Beispiel. Setzen Sie stattdessen

  List<string> myResult = WhatEver(...).ToList();

Verwandte Fragen