实际上,您可以在属性 getter 和 setter 中添加大多数您想要的东西。实际上,它们只不过是避免这样写的简单方法:
private String _value;
public String GetValue
{
return _value;
}
public void SetValue(string value)
{
_value = value;
}
因此,如果您可以在方法中执行此操作,则可以在属性中执行此操作(不一定意味着您应该这样做)
至于什么是正确的,很大程度上取决于上下文,许多人有不同的意见。我尝试遵循的一般准则是:
- 不要做任何需要太多时间的事情。预计属性会很快。
- 不要放任何会抛出异常的东西,
Exception
除非它被记录在案并且有意义。我将使用ArgumentException
orNullReferenceException
在我必须考虑会破坏代码的属性中的值的情况下,但是如果它需要异常或者我调用可能导致与属性本身无关的异常的方法,那么方法更好.
- 使用常识。如果你可以对自己说,我想
get
或set
一个值,那么一个属性是有意义的。如果我想do something
,那么你可能最好用一种方法。
- 这可以追溯到 #1,但是如果没有要获取或设置的支持字段(自动属性无论如何都会在后台执行此操作),那么您必须考虑一个属性是否真的是正确的方法。
但正如我所说,这些是我的指导方针,我会不时打破它们,但当我这样做时,我倾向于确保有文件证明该物业将做一些无例外或长期运行的事情。
myColl
如果或是,p
您的示例可能会引发异常null
,因此除非您 100% 确定两者都不可能为空,否则我不会将此作为属性。