假设我们有一个私有支持字段和一个公开该字段的私有财产。如果任何代码(甚至类中的代码)尝试访问或修改除了属性之外的字段而没有在自己的对象中封装字段和属性,C#是否支持属性或任何其他语法来强制编译器错误?请参阅下面的一个简单示例。
/// <summary>
/// Class to cache and quickly access data. Please only use this class if 1) the data to be cached uses little memory and 2) the number of DB reads is high and could cause a performance strain.
/// </summary>
class BMIDataCache
{
#region fields
protected static BMITimedDictionary<String, Device> _devices;
#endregion
#region properties
protected static BMITimedDictionary<String, Device> Devices
{
get
{
if (_devices == null)
{
_devices = new BMITimedDictionary<String, Device>();
//Do some other stuff later.
}
return _devices;
}
set
{
_devices = value;
}
}
public void Test1()
{ //Inside this method, trying to access _devices will cause a compiler error, but not Devices
}
}
答案 0 :(得分:5)
C#中没有任何内容可以帮助您隐藏同一类成员的private
字段。
您的选择:
private
。然后将实际代码添加到派生类 - 因此派生类将无法访问字段旁注:你将无法隐藏反射中的字段......