gpt4 book ai didi

具有非自动属性的 C# 匿名支持字段

转载 作者:太空狗 更新时间:2023-10-29 22:11:11 26 4
gpt4 key购买 nike

我想创建一个私有(private)成员变量,即使对于拥有它的类也是私有(private)的,并且只能由它的 getter 和 setter 访问。我知道你可以用像这样的自动属性来做到这一点

private int MyInt{ get; set;}

但我希望能够修改 getter 和 setter,这样(例如)我可以记录该字段被设置了多少次(即使是拥有类)。像这样

private int MyInt
{
get{ return hiddenValue; }
set{ hiddenValue = value; Console.Out.WriteLine("MyInt has been set");}
}

其中“hiddenValue”是只能在 getter 和 setter 中访问的成员。为什么?因为我是一个偏执的防御性程序员,我什至不相信自己 :p。

这在 C# 中可行吗?如果是这样,语法是什么?

谢谢。

最佳答案

你真的应该相信自己。

不,你不能使一个变量变得如此私有(private),即使封装类也看不到它。

如果您真的想要这个,您可以将值封装在一个嵌套类中,它能够覆盖它自己的私有(private)。

class Foo 
{
class Bar // nested
{
private int _value;
public int Value
{
get { return _value; }
set { _value = value; /* logic */ }
}
}
}

Foo可以实例化一个Bar,得到bar.Value,但是不能得到_value。

关于具有非自动属性的 C# 匿名支持字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com