我有这个示例代码。我想要做的是使“Nums”值只能使用“AddNum”方法写入。
namespace ConsoleApplication1
{
public class Person
{
string myName = "N/A";
int myAge = 0;
List<int> _nums = new List<int>();
public List<int> Nums
{
get
{
return _nums;
}
}
public void AddNum(int NumToAdd)
{
_nums.Add(NumToAdd);
}
public string Name { get; set; }
public int Age { get; set; }
}
}
不知何故,我尝试了很多关于 AsReadOnly() 和 readonly 关键字的事情,但我似乎无法让它做我想做的事情。
这是我必须访问该属性的代码示例。
Person p1 = new Person();
p1.Nums.Add(25); //access 1
p1.AddNum(37); //access 2
Console.WriteLine("press any key");
Console.ReadLine();
我真的希望“访问 1”失败,而“访问 2”成为ONLY可以设置该值的方式。先谢谢您的帮助。
√ 请使用 ReadOnlyCollection,ReadOnlyCollection 的子类,
或者在极少数情况下 IEnumerable 用于属性或返回值
代表只读集合。
引用自本文 https://msdn.microsoft.com/en-us/library/dn169389(v=vs.110).aspx.
你应该有这样的东西:
List<int> _nums = new List<int>();
public ReadOnlyCollection<int> Nums
{
get
{
return _nums.AsReadOnly();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)