stu*_*221 1 c# class list readonly-collection
我有这个示例代码.我想要做的是使"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; }
}
}
Run Code Online (Sandbox Code Playgroud)
不知怎的,我已经尝试了一些关于AsReadOnly()和readonly关键字的东西,但我似乎无法让它做我想做的事情.
以下是我必须访问该属性的代码示例.
Person p1 = new Person();
p1.Nums.Add(25); //access 1
p1.AddNum(37); //access 2
Console.WriteLine("press any key");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
我真的希望"访问1"失败,"访问2"是唯一可以设置值的方式.在此先感谢您的帮助.
√请使用ReadOnlyCollection,ReadOnlyCollection的子类,或者在极少数情况下使用IEnumerable属性或返回表示只读集合的值.
本文的引用.
你应该有这样的东西:
List<int> _nums = new List<int>();
public ReadOnlyCollection<int> Nums
{
get
{
return _nums.AsReadOnly();
}
}
Run Code Online (Sandbox Code Playgroud)