0

现在是一个理论问题。

据我了解,方法用于实现某种行为,属性用于保留对象的某些状态。

我发现它 XContainer.Nodes()XElement.Attributes()被实现为方法,而不是属性。而且,恕我直言,其他应该作为属性实现的方法:XNode.ElementsAfterSelf()等等XNode.ElementsBeforeSelf() XNode.NodesAfterSelf()

因此,返回IEnumerable of something的所有内容都在 Linq to XML 中作为方法(而不是属性)实现。

这是什么原因?我的意思是它是否适用于某些特定情况,或者它只是一个错误,例如String.Split()方法,它返回char array而不是更多预期IEnumerable<char>

4

1 回答 1

1

引用微软“在属性和方法之间选择”

一般来说,方法代表动作,属性代表数据。属性旨在像字段一样使用,这意味着属性不应计算复杂或产生副作用。如果不违反以下准则,请考虑使用属性而不是方法,因为经验不足的开发人员会发现属性更易于使用。

如果成员表示该类型的逻辑属性,请考虑使用属性。

例如,BorderStyle 是一个属性,因为边框的样式是 ListView 的一个属性。

如果属性的值存储在进程内存中并且该属性仅提供对该值的访问,请使用属性而不是方法。

您还可以在此处阅读“属性与方法”

我喜欢最后一个链接的解释

该操作非常昂贵,以至于您希望与用户交流他们应该考虑缓存结果。

于 2013-10-16T18:09:44.447 回答