有些方法会对对象的属性执行操作(不能想到一个例子),但有些方法实际上不会影响对象的属性,只返回一个值(例如DateTime.Add())。
我知道这是一个简单的问题,但我不知道如何引用这两种方法。
答案 0 :(得分:4)
不能想到第一个,但第二个可能被称为无副作用,如it doesn't mutate state。并不是说你如何引用它,而是更多地描述它的行为。
你倾向于听到并发语言中使用的“副作用”,Axum将这个概念融入其中。
例如,此方法是无副作用的:
public string GetName()
{
return "Adam";
}
这种方法不是:
public int GetTotal(int optionalValue = 0)
{
_total += optionalValue;
return _total;
}
它可能会将状态(在本例中为_total
)变为方法调用的一部分。下次调用它时,由于方法调用本身,_total
可能与上次相同或不同。
除非你在考虑财产制定者......
public string Name
{
set { _name = value; }
}
......我认为描述方法没有任何共同术语。对象中的大多数方法都会以某种方式使用内部状态 - 读取或写入。
答案 1 :(得分:2)
你可以简单地说
答案 2 :(得分:1)
属性访问方法和派生属性方法是我过去用来区分的内容。
例如,对于未存储为DateTime的虚构属性,属性访问方法可能会执行以下操作。
DateTime GetOrderDateTime()
{
return OrderDate.ConvertToDateTime();
}
派生属性方法是:
DateTime GetNextOrderDate()
{
return GetOrderDate.AddOneMonth(...);
}
我故意避免讨论什么应该是属性,以及在OP的发布上下文中明确定义的理解应该是什么方法。
修改这些方法中的属性,正如Adam所说,这是引入副作用的好方法 - 最好坚持使用好名字(例如ModifyTotal)和Get方法和属性获取的约定永远不应该(通常)修改属性。