我应该使用属性或方法计算值吗?

Eri*_*ric 5 c# properties semantics

可能重复:
属性与方法

我有一些矢量几何类,并且有很多功能我不知道是否实现为(只读)属性或方法.例子包括:

Vector.Length                   or              Vector.Length()
Vector.Perpendicular            or              Vector.Perpendicular()
Matrix.Determinant              or              Matrix.Determinant()
Matrix.Inverse                  or              Matrix.Inverse()
Run Code Online (Sandbox Code Playgroud)

我应该将这些作为方法或属性实现吗?他们都没有改变他们适用的对象,所以在这方面,他们似乎适合作为属性.另一方面,它们涉及计算(虽然是小的 - 这是2D几何),这显然对属性不利.

在这种情况下,我应该使用哪些规则?

Yet*_*eek 5

属性用于启用统一访问原则,因此,只要您进行一些计算,属性就是最佳选择.这是因为它们是描述对象而不是对对象做事而不需要任何外部计算参数的东西.

有了变异的权利,getter不应该变异,并且setter可能会根据Command Query Separation Principle变异.