有没有办法在C#中做这样的事情:
public class Class2 {
public string PropertyName1 { get
{
return this; //i mean "PropertyName1"
}
set {
this = value;
DoAdditionalFunction();
}
}
因为我需要在“set”中调用其他函数,我需要有一个额外的私有字段,如
private string _propertyName1;
public string PropertyName1 { get
{
return _propertyName1;
}
set {
_propertyName1= value;
DoAdditionalFunction();
}
我不想使用像_propertyName1这样的附加属性。有没有办法实现这个或任何最佳实践?
答案 0 :(得分:5)
否 - 如果您需要任何行为而不是最简单的“设置字段,返回字段值”,则需要编写“完整”属性。自动实现的属性仅是简单属性的简写。
请注意,就对象的实际内容而言,您还没有真正获得“额外”私有字段 - 只是您明确声明私有字段而不是让编译器为您执行此操作自动实现的属性。
(目前尚不清楚你的第一个属性尝试做什么 - 在类中设置this
无效,除非你有一个属性,否则你不能从string类型的属性返回this
将转换为字符串...)