我遇到了這種情況,我可以在外面修改班級的私人成員。這裏是我的課:能夠修改課外私人會員嗎?
public class MyClass
{
private List<string> _myClassMember = null;
public MyClass()
{
_myClassMember = new List<string>();
}
public List<string> GetClassMembers()
{
return _myClassMember;
}
public void PrintMembers()
{
Console.WriteLine("No of items in member {0}", _myClassMember.Count.ToString());
}
}
這是它是如何被稱爲:
class Program
{
static void Main(string[] args)
{
MyClass cls = new MyClass();
cls.PrintMembers();
IList<string> lst = cls.GetClassMembers();
lst.Add("Item1");
lst.Add("Item2");
cls.PrintMembers();
}
}
它打印如下:
No of items in member 0
No of items in member 2
的是,正確的能夠外面更新私有成員?
如果您希望您的列表不可變,即調用GetClassMembers()的代碼將無法修改它,您可以從您的公共方法返回_myClassMember..AsReadOnlyCollection()。 –
將'GetClassMembers()'從'return _myClassMember;'更改爲'返回新的ReadOnlyCollection(_myClassMember);'相應地更新簽名。請參閱http://msdn.microsoft.com/en-us/library/ms132474.aspx。 –
Brian