Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类文件和集合_C#_Oop_List - Fatal编程技术网

C# 类文件和集合

C# 类文件和集合,c#,oop,list,C#,Oop,List,我有一个类文件,它的设置类似于下面的结构。基本上,objALLData是我的主要数据对象(它从用户那里收集信息并将其插入数据库)。 但是,在objAllData中,我需要有一个集合选项,该集合可以是objSubSet1和/或objSubSet2。但是,这两个子集都不需要公开。我需要它们做的只是填充,然后在objAllData中将它们添加到集合中(在objAllData中指定) 当我试图使子集类私有时,我得到了一个不一致的可访问性错误。根据我的研究,我需要把它们公之于众。但是,我真的不想让任何人知

我有一个类文件,它的设置类似于下面的结构。基本上,objALLData是我的主要数据对象(它从用户那里收集信息并将其插入数据库)。 但是,在objAllData中,我需要有一个集合选项,该集合可以是objSubSet1和/或objSubSet2。但是,这两个子集都不需要公开。我需要它们做的只是填充,然后在objAllData中将它们添加到集合中(在objAllData中指定)

当我试图使子集类私有时,我得到了一个不一致的可访问性错误。根据我的研究,我需要把它们公之于众。但是,我真的不想让任何人知道这些对象,除了objAllData。这有意义吗

你知道我怎样才能达到我想要的吗?:)

公共类objAllData
{
列表ss1=新列表();
列表ss2=新列表();
公共列表addSS1toCollection()
{
objSubSet1 myOBJSS1=新的objSubSet1();
myobjs1.property=“”;
ss1.添加(MYOBJS1);
返回ss1;
}
}
公共类objSubSet1
{
}
公共类objSubSet2
{
}

由于add方法返回列表,用户需要对返回的类型有一定的可见性。不完全公开真实对象类型的最简单方法是创建一个接口

public interface Thing {
  //public methods
}

public class ObjAllData {
  public List<Thing> addSS1toCollection() {
    List<ObjSubSet1> ss1 = new List<objSubSet1>();
    ss1.add(new ObjSubSet1());
    return ss1;
  }

  private class ObjSubSet1 : Thing {
    //implements public methods
  }
}
函数定义必须指定返回的变量类型,而不是变量名

public ss1 addSS1toCollection() //incorrect
public List<objSubSet1> addSS1toCollection() //correct
public ss1 addSS1toCollection()//不正确
公共列表addSS1toCollection()//正确

您的返回语句后还缺少一个分号。

unholysampler上面的代码是伪代码(勉强)-更像是在问题表单中快速记下我想要的内容:)。谢谢你的回答。我会试试那个方向。为什么让addSS1toCollection()返回ss1呢?重新思考你在objAllData上提供的方法。@ozan-那么你会怎么做?
public class objAllData() //incorrect
public class ObjAllData //correct
public ss1 addSS1toCollection() //incorrect
public List<objSubSet1> addSS1toCollection() //correct