C# 相当于类内集合的getter/setter
我的课程如下:C# 相当于类内集合的getter/setter,c#,scope,encapsulation,C#,Scope,Encapsulation,我的课程如下: public class Document { public List<DocumentSection> sections = new List<DocumentSection>(); ... 公共类文档 { 公共列表部分=新列表(); ... 各种各样的问题涉及这样一种情况:属性需要从类内部可写,但只能从类外部读取(http://stackoverflow.com/questions/4662180/c-sharp-public-va
public class Document
{
public List<DocumentSection> sections = new List<DocumentSection>();
...
公共类文档
{
公共列表部分=新列表();
...
各种各样的问题涉及这样一种情况:属性需要从类内部可写,但只能从类外部读取(http://stackoverflow.com/questions/4662180/c-sharp-public-variable-as-writeable-inside-the-clas-but-readonly-outside-the-cl)
我也希望这样做,但是对于这个集合-允许从类内添加到它,但是只允许用户在它之外的时候遍历它。这是否可行
谢谢将集合公开为
IEnumerable
,这样用户只能对其进行迭代
public class Document {
private List<DocumentSection> sections;
public IEnumerable<DocumentSection> Sections
{
get { return sections; }
}
}
公共类文档{
私人名单部分;
公共可数部分
{
获取{返回节;}
}
}
将集合公开为IEnumerable
,以便用户只能对其进行迭代
public class Document {
private List<DocumentSection> sections;
public IEnumerable<DocumentSection> Sections
{
get { return sections; }
}
}
公共类文档{
私人名单部分;
公共可数部分
{
获取{返回节;}
}
}
是的,您必须隐藏列表,并且只公开Add方法和类型为IEnumerable
的属性:
公共类文档
{
私有列表部分=新列表();
公共无效添加部分(文档部分){
节。添加(节);
}
公共可数部分{
获取{返回节;}
}
}
是的,您必须隐藏列表,并且只公开Add方法和类型为IEnumerable
的属性:
公共类文档
{
私有列表部分=新列表();
公共无效添加部分(文档部分){
节。添加(节);
}
公共可数部分{
获取{返回节;}
}
}
您可以将列表公开为一个IEnumerable
,并且只能在内部使用列表。如下所示:
public class Document {
public IEnumerable<DocumentSection> Sections { get { return list; } }
private List<DocumentSection> list;
}
公共类文档{
公共IEnumerable节{get{return list;}}
私人名单;
}
您可以将列表公开为一个IEnumerable
,并且只能在内部使用列表。如下所示:
public class Document {
public IEnumerable<DocumentSection> Sections { get { return list; } }
private List<DocumentSection> list;
}
公共类文档{
公共IEnumerable节{get{return list;}}
私人名单;
}
如果确实只允许迭代,可以将IList保持为私有,但将公共函数解析为GetEnumerator()如果确实只允许迭代,可以将IList保持为私有,但将公共函数解析为GetEnumerator()公共类文档{
私有只读列表节=新列表();
公共可数部分
{
得到
{
锁(本节)
{
返回节。ToList();
}
}
}
}
公共类文档{
私有只读列表节=新列表();
公共可数部分
{
得到
{
锁(本节)
{
返回节。ToList();
}
}
}
}
非常感谢简,非常感谢。非常感谢简,非常感谢。