我有以下财产
public MyType MyProperty {get;set;}
我想更改此属性,以便如果值为空,它将首先填充该值,然后返回它......但是without使用私有成员变量。
例如,如果我这样做:
public MyType MyProperty
{
get
{
if (_myProperty != null)
return _myProperty
else
_myProperty = XYZ;
return _myProperty;
}
set
{
_myProperty = value;
}
}
这可能吗?或者我需要成员变量来完成它吗?
您需要一个成员变量和完整的属性声明。自动实现的属性是only如果它们是字段周围的简单包装,不涉及逻辑,则适用。顺便说一句,您可以稍微简化您的 getter 代码:
get
{
if (_myProperty == null)
{
_myProperty = XYZ;
}
return _myProperty;
}
(请注意,如果没有额外的锁定,这些都不是线程安全的,但我认为没关系。)
顺便说一句,你已经have如果您使用自动实现的属性,则为私有成员变量 - 只是编译器为您生成它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)