为什么要冗余私有变量?这两种策略有什么不同吗?任何人都可以请对此有所了解。
如果您所做的只是读取/写入变量,那么不会。否则,您需要私有变量有两个原因:
数据验证
// Data validation
public class IntWrapper
{
private int _value;
public int Value
{
get { return _value; }
set
{
if (value < 0) { throw new Exception("Value must be >= 0"); }
_value = value;
}
}
}
Getter/setter 封装了底层数据存储
public class StringBuffer
{
List<char> chars = new List<char>();
// Wraps up an underlying data store
public string Value
{
get { return new String(chars.ToArray()); }
set { chars = new List<char>(value.ToCharArray()); }
}
public void Write(string s) { Write(chars.Count, s); }
public void Write(int index, string s)
{
if (index > chars.Count) { throw new Exception("Out of Range"); }
foreach(char c in s)
{
if (index < chars.Count) { chars[index] = c; }
else { chars.Add(c); }
index++;
}
}
}