2016-06-11 36 views
1

我刚刚从Java切换到C#,并刚刚熟悉Property的概念,这似乎是获取和设置字段值的常用方法。创建方法来改变C#中的私有字段的正确方法是什么?

那么我应该怎么做,如果我需要更新字段值,但不设置它们全新的值?就像我的课上有一个字段是一个List,我需要将元素添加到List中,同时保持List的其余部分不变。如果我只是继续前进,创造像

void append(Point p) { } 

或者是有在C#这样做的更优雅或文明的方式方法?

+0

你可以公开列表作为属性列表 Points {get;组; }'并调用Add/Remove就可以了。 –

+0

如何将项目添加到列表中,同时保持列表的其余部分不变?这与将项目添加到列表中有何不同? – Enigmativity

回答

0

如果你想允许修改列表中,但不允许实例被改变,你可以写 public IList<Point> MyPointList {get; private set;}

不过,如果你想只支持添加元素,那么add方法将是一个好办法走。

+0

你似乎是罗尼科尔曼的粉丝。 :) –

+0

大声笑,我实际上没有把这一起,当我想出了名字。这只是我说的。 :D –

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的语法。

0

C#语法简单而优雅,写起来很愉快。在一个类中,你可以创建一个支持公共getter和setter的私有字段。从这个班级内,你可以设置或获得私人领域,只要你喜欢。如果一个不同的类需要访问该字段,则需要使用公共的getter和setter。示例:可以从类中创建和编辑私人列表,但您可以选择。使用自定义添加方法或使用List .Add方法。从另一个类中,您只需调用公共List属性的.Add方法。真的只有一个正在编辑的私人列表。您可以为其他任务创建另一个私人列表。在进入主列表之前,可能有一个等待验证项目的临时区域。

+0

[试试这个](https://en.wikipedia.org/wiki/Enter_key) – TaW

相关问题