Gibt es einen grundlegenden Unterschied bei der Einstellung von Objekteigenschaften mit oder ohne das Schlüsselwort new
?Festlegen von Objekteigenschaften mit oder ohne C# 'new' Schlüsselwort
Das folgende ist ein Beispiel zur Veranschaulichung, was ich beziehe, unter Fall 1 und Fall 2 gezeigt. Wo immer möglich beabsichtigen Fall 2 zu verwenden (sieht ordentlich aus wie eine einzelne Aussage), konnte aber nicht sicher sein, ob die C# new
Keyword hat Nachteile wie erhöhte Speicherauslastung. @Dennis_E Ich habe schon +1 gewählt ;-)
Amended Supplement: Danke euch allen mit prompten Kommentaren und Antworten. Sie wissen, Kommentare und Antworten jog ähnliche Punkte, an die Sie nie gedacht haben, als die Frage gestellt wurde. Verzeihen Sie mir für die Änderung, aber ich hoffe, Sie verstehen es.
Angenommen, der Code in Fall 1 und Fall 2 wird mehrfach verwendet (z. B. beim Navigieren auf einer Ansichtsseite), hat Fall 2 einen Nachteil beim Erhöhen des Speichers. Vielleicht mache ich hier eine falsche Annahme - schafft das "neue" Erzeugen der gleichen Variable ein neues Objekt? Vielleicht ist dies die grundlegende Frage.
public static class MyCache
{
public static NameIdObject MyCacheObject = new NameIdObject();
}
public class NameIdObject
{
public string Name { get; set; }
public int Id { get; set; }
}
// Usage 1: without new keyword
MyCache.MyCacheObject.Name = "foo";
MyCache.MyCacheObject.Id = 123;
// Usage 2: with new keyword
MyCache.MyCacheObject = new NameIdObject { Id = 123, Name = "foo" };
beide Fälle ähneln sich hinsichtlich der Art und Weise, wie das Objekt konstruiert wird. "MyCache.MyCacheObject" wird immer initialisiert. –
In Bezug auf die Erinnerung sind sie ziemlich gleich. Fall 2 verwendet faule Instanziierung, die die Zuweisung von Speicher verzögert. Dies ist jedoch eher eine Entscheidung des Designs. EDIT: Dies setzt voraus, dass Sie in Fall 2 das Objekt nicht direkt in "MyCache" initialisieren. –