Dav*_*New 68 .net c# methods properties class
我需要公开一个类实例的" is mapped? "状态.结果由基本检查确定.它不是简单地暴露字段的值.我不确定是否应该使用只读属性或方法.
只读属性:
public bool IsMapped
{
get
{
return MappedField != null;
}
}
Run Code Online (Sandbox Code Playgroud)
方法:
public bool IsMapped()
{
return MappedField != null;
}
Run Code Online (Sandbox Code Playgroud)
Car*_*ten 85
C#标准说
§8.7.4
甲属性是提供访问对象或类的特性的部件.属性的示例包括字符串的长度,字体的大小,窗口的标题,客户的名称等.属性是字段的自然扩展.两者都是具有关联类型的命名成员,访问字段和属性的语法是相同的.但是,与字段不同,属性不表示存储位置.相反,属性具有访问器,用于指定在读取或写入值时要执行的语句.
而方法定义为
§8.7.3
甲方法是实现可以由对象或类执行的计算或操作的部件.方法有一个(可能是空的)形式参数列表,一个返回值(除非方法的返回类型为void),并且是静态的或非静态的.
属性和方法用于实现封装.属性封装数据,方法封装逻辑.这就是为什么如果要公开数据,你应该更喜欢只读属性.在您的情况下,没有逻辑可以修改对象的内部状态.您希望提供对对象特征的访问.
对象的实例是否是对象IsMapped
的特征.它包含一个检查,但这就是您拥有访问它的属性的原因.可以使用逻辑定义属性,但它们不应公开逻辑.就像第一个引用中提到的例子一样:想象一下这个String.Length
属性.根据实现,可能是此属性循环遍历字符串并对字符进行计数.它也执行一个操作,但"从外部"它只是给出了对象的内部状态/特征的声明.
在这种情况下,我似乎很清楚它应该是一个属性。这是一个简单的检查,没有逻辑,没有副作用,没有性能影响。它没有比那个检查简单得多。
编辑:
请注意,如果出现了任何上述的,你会把它变成一个方法,该方法应该包括一个强有力的动词,不是助动词像是或有。一种方法做事情。只要它以动词开头,您就可以将其命名为VerifyMapping 或DeleteMappingExistance 或其他名称。
我认为您链接中的这一行就是答案
方法代表动作,属性代表数据。
这里没有任何动作,只是一段数据。所以它是一个属性。
归档时间: |
|
查看次数: |
8766 次 |
最近记录: |