vrw*_*wim 2 c# field properties
首先,我已经阅读了询问字段和属性之间差异的问题,我知道它的用途.
现在回答我的问题,我想创建一个属性,我确信get和set都是空的,所以我这样做get; set;.一切都很好.但是现在我意识到我刚刚创建了一个带有大写名称的公共领域,它在各方面都是相同的.
即使是使用它的论点,因此未来的代码也不能依赖于实现,因为我可以简单地将其作为属性并实现getter或setter.字段和属性的语义在它定义的类之外是相同的.
所以我的问题是,当一个房产只是使用时,我应该使用一个字段或一个属性get;set;吗?
所以这:
public IEnumerable<string> Products;
Run Code Online (Sandbox Code Playgroud)
在各方面都是相同的:
public IEnumerable<string> Products { get; set; }
Run Code Online (Sandbox Code Playgroud)
当一个属性只使用get; set;?时,我应该使用字段还是属性?
出于以下实际原因使用属性...以及属性公开状态API的哲学原因,而字段公开状态实现细节.
字段和属性的语义在它定义的类之外是相同的.
这不是真的.
SomeMethod(ref x.Products)在Products成为财产时将变为无效.)foo.Location.X = 10作品的时候Location是一个字段(因为x.Location被归类为一个变量)时,而它不会Location是一个属性(因为这样的话表达x.Location被列为值) .如果你有一个方法(在你的邪恶的可变类型中)改变了值,那么foo.Location.DoSomething()将在两种情况下编译,但具有不同的效果.为所有家庭带来乐趣.