C#表达式主体与{get;} vs没有

Jus*_*Too 0 c# expression properties

由于我不知道适用于此的术语,我不确定如何搜索现有的评论.

我最近浪费了大量时间,表达体类似于:

public SomeListViewModel SearchSomeModel => new ShowSomeViewModel{...};
Run Code Online (Sandbox Code Playgroud)

当我尝试设置值时,例如:
SearchSomeModel.Property = 12345;

它表现得像一切都很好.但实际价值从未改变.当我改为插入{get;}时:

public SomeListViewModel SearchSomeModel {get;} =  new ShowSomeViewModel{...};
Run Code Online (Sandbox Code Playgroud)

它工作正常.

有趣的是,如果这是以正常的get开始(使用get {return ..},那么ReSharper(?)提供将其转换为第一个版本.

无论如何,我想要理解两者之间的差异(不,不是在CLR级别),而只是为了a)知道如何引用其中的每个正确的术语和b)为什么一个有效,另一个只是假装工作.

谢谢!

Ofi*_*ten 5

第一行代码 -

public SomeListViewModel SearchSomeModel => new ShowSomeViewModel{...};
Run Code Online (Sandbox Code Playgroud)

意味着它会在ShowSomeViewModel每次尝试时创建一个新实例get.
它相当于:

public SomeListViewModel SearchSomeModel {
    get {return new ShowSomeViewModel{...};}
}
Run Code Online (Sandbox Code Playgroud)

另一方面

public SomeListViewModel SearchSomeModel {get;} =  new ShowSomeViewModel{...};
Run Code Online (Sandbox Code Playgroud)

表示您正在设置默认值.