Da ich nicht den Begriff kennen, der sich darauf bezieht, bin ich nicht sicher, was nach vorhandenen Kommentaren zu diesem suchen.C# -Ausdruck Körper mit {Get;} vs ohne
I eine Menge Zeit mit einem Expressionskörper kürzlich vergeudet ähnelt:
public SomeListViewModel SearchSomeModel => new ShowSomeViewModel{...};
Als ich versuchte, Werte zu setzen, wie beispielsweise:
SearchSomeModel.Property = 12345;
Es handelte wie alles gut war. Aber der tatsächliche Wert hat sich nie geändert. Wenn ich stattdessen ein {get;} wie in:
eingefügt wurde Es funktionierte richtig.
Das Komische ist, dass, wenn dies als normale get beginnt (mit einem get {return ..} dann ReSharper (?) Bietet es die erste Version zu konvertieren.
Wie auch immer, ich möchte verstehen, der Unterschied zwischen den beiden (nein, nicht auf einer CLR-Ebene), sondern nur zu a) weiß, wie man sich auf jeden in seinen richtigen Begriffen bezieht und b) warum einer arbeitet und der andere nur vorgibt zu arbeiten.
Danke!
Einfache [TryRoslyn] (https://tryroslyn.azurewebsites.net/#b:master/f:r/K4Zwlgdg5gBAygTxAFwKYFsDcBYAUAB2ACMAbMAYxnJIEMQQYBhGAbzxg5kNIpgHsiAK1TlkMAJIBGGAF4AfDAioA7vyEjkACgCUOXJxjtO3MpQHDREgEysYUVMkwwAvrMUq1FrbrzOgA===), das zeigt den Unterschied ... – xanatos
Wenn ich mich nicht irre, wertet der Ausdruck body den Wert immer wieder aus (dh er ruft den Konstruktoraufruf auf, den Sie jedes Mal geschrieben haben, wenn Sie den Wert von SearchSomeModel lesen), während Ihr zweites Beispiel nur eine Eigenschaft mit dem einen Wert initialisiert wird dann gespeichert und kann geändert werden. – MetaColon
Die Suche nach dem genauen Titel Ihrer Frage führt zu (vielen) Seiten, die die Antwort auf Ihre Frage erklären, so dass Sie * einen geeigneten Suchbegriff für dieses Problem kennen. – Servy