Bry*_*art 5 .net c# defensive-programming c#-3.0 c#-4.0
我想创建一个私有成员变量,即使对于拥有它的类也是私有的,并且只能由其getter和setter访问.我知道你可以用自动属性这样做
private int MyInt{ get; set;}
Run Code Online (Sandbox Code Playgroud)
但我希望能够修改getter和setter(例如)我可以记录字段设置的次数(即使是拥有的类).像这样的东西
private int MyInt
{
get{ return hiddenValue; }
set{ hiddenValue = value; Console.Out.WriteLine("MyInt has been set");}
}
Run Code Online (Sandbox Code Playgroud)
其中"hiddenValue"是只能在getter和setter中访问的成员.为什么?因为我是一个偏执的防守程序员,我甚至不相信自己:p.
这可能在C#中吗?如果是这样,语法是什么?
谢谢.
你真的应该相信自己.
不,即使封装类无法看到它,也无法将变量设置为私有.
如果你真的想要这个,你可以将值封装在一个嵌套类中,它可以覆盖自己的私有.
class Foo
{
class Bar // nested
{
private int _value;
public int Value
{
get { return _value; }
set { _value = value; /* logic */ }
}
}
}
Run Code Online (Sandbox Code Playgroud)
Foo可以实例化一个Bar,获取bar.Value,但它无法获得_value.