我刚刚从Java切换到C#,只是熟悉了Property的概念,这似乎是获取和设置字段值的常用方法。
那么,如果我需要经常更新字段值,而不是将它们设置为全新的值,我该怎么办?就像,我的类中有一个字段是List,我需要有时在其中添加元素,同时保持List的其余部分不变。我应该继续创建像
这样的方法void append(Point p) { }
或者在C#中有更优雅或文明的方式吗?
答案 0 :(得分:1)
没有单一的"正确的"通过API设置私有字段的方法。答案取决于您希望向用户提供的功能。
如果您想让他们访问您的List<Point>
作为他们可以以任何方式修改的只读集合,您可以将您的列表显示为只读属性:
public IList<Point> Points {get;} = new List<Point>();
如果您认为此方法为您的用户提供了太多自由,并且您希望更严格地控制列表中显示的点,则可能需要公开用于访问列表的属性IEnumerable<Point>
以及一些在列表中添加/删除/修改点的方法。
private IList<Point> points = new List<Point>();
public IEnumerable<Point> Points => points;
public void AddPoint(Point p) {
// validate p before inserting on the list,
...
points.Add(p);
}
注意:上面的代码示例使用C#6语法。
答案 1 :(得分:0)
如果您想允许修改列表但不允许更改实例,您可以编写
UserCredential
但是如果你只想支持添加元素,那么add方法将是一个很好的方法。
答案 2 :(得分:0)
C#语法简单而优雅,写作乐趣。在类中,您可以创建一个备份公共getter和setter的私有字段。在此类中,您可以根据需要设置或获取私有字段。如果需要访问该字段的其他类,则需要使用公共getter和setter。示例:可以从您选择的类中创建和编辑私有列表。使用自定义添加方法或使用List .Add方法。从另一个类中,您只需调用公共List属性.Add方法。实际上只有一个私人列表正在编辑中。您可以为另一个任务创建另一个私有列表。也许是在进入主列表之前等待验证的项目的暂存区域。