Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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语言在Java中重新创建嵌套的静态类_Java_C#_Static - Fatal编程技术网

使用C语言在Java中重新创建嵌套的静态类

使用C语言在Java中重新创建嵌套的静态类,java,c#,static,Java,C#,Static,我正在将一段代码从Java移植到C Sharp。在Java中,我有以下类 public class ClassA{ ... private List<ClassA.ClassB> classBs = new ArrayList(); public classA(){ for(int i = 0; i < 10; i++){ this.classBs.add(new ClassA.ClassB());

我正在将一段代码从Java移植到C Sharp。在Java中,我有以下类

public class ClassA{
    ...
    private List<ClassA.ClassB> classBs = new ArrayList();

    public classA(){
        for(int i = 0; i < 10; i++){
            this.classBs.add(new ClassA.ClassB());
        }
    }

    public static class ClassB{
        private int value;

        public ClassB(){
            this.value = 0;
        }
    }
}
公共类ClassA{
...
private List classBs=new ArrayList();
公共甲级(){
对于(int i=0;i<10;i++){
this.classBs.add(新的ClassA.ClassB());
}
}
公共静态类B{
私有int值;
公共类别B(){
该值=0;
}
}
}
需要注意的重要一点是

this.classBs.add(新的ClassA.ClassB())

我们正在创建一个静态内部类的实例

现在,在C sharp中,我无法重新创建相同的静态内部类。 经过研究,我发现我只能做以下一项

  • 使内部类classB非静态或使classB的所有成员为静态
  • 在classA之外定义classB

  • 两者似乎都没有重现Java的确切代码。如何进行此操作?

    Java嵌套静态类与常规C#嵌套类非常相似:

    public class ClassA
    {
        private IList<ClassB> classBs = new List<ClassB>();
    
        public ClassA()
        {
            for (int i = 0; i < 10; i++)
            {
                this.classBs.Add(new ClassB());
            }
        }
    
        public class ClassB
        {
            internal int value;
    
            public ClassB()
            {
                this.value = 0;
            }
        }
    }
    
    公共类ClassA
    {
    私有IList classBs=新列表();
    公共甲级()
    {
    对于(int i=0;i<10;i++)
    {
    this.classBs.Add(new ClassB());
    }
    }
    公共B类
    {
    内部int值;
    公共类别B()
    {
    该值=0;
    }
    }
    }
    
    “注意:静态嵌套类与其外部类(和其他类)的实例成员进行交互,就像任何其他顶级类一样。实际上,静态嵌套类在行为上是一个顶级类,为了便于打包而嵌套在另一个顶级类中。”——因此,我认为您只需看1的前半部分。或2。第二句话让我倾向于在外面创建一个类。也许我可以尝试使用不同的名称空间来组合这些类。谢谢@FildorIsn不是所有C#中的内部类都是静态的吗?初始化的静态类?这在Java中真的有效吗?我不知道初始化的静态类是什么意思。但是,是的,我根据我的项目中的工作编写了上面的代码