C#有Java的静态嵌套类的相同呢?(Does C# have an equivalent of J

2019-08-19 15:12发布

我的Java转换成C#和有下面的代码(见在Java的语境下讨论有关其使用)。 一种做法是创建一个单独的文件/类,但有其保留在Java代码意图的C#IDOM?

   public class Foo {

    // Foo fields and functions
    // ...
        private static class SGroup {
            private static Map<Integer, SGroup> idMap = new HashMap<Integer, SGroup>();

            public SGroup(int id, String type) {
    // ...
            }
        }
    }

Answer 1:

这给看看http://blogs.msdn.com/oldnewthing/archive/2006/08/01/685248.aspx

我在专门找

换句话说,Java的内部类是语法糖是不可用C#。 在C#中,你必须做手工。

如果你愿意,你可以创建自己的糖:

 class OuterClass { ... InnerClass NewInnerClass() { return new InnerClass(this); } void SomeFunction() { InnerClass i = this.NewInnerClass(); i.GetOuterString(); } } 

当你想在Java中新o.InnerClass(...)来写,你可以在C#或者o.NewInnerClass(...)或新写将InnerClass(O,...)。 是的,它只是一堆移动新字左右的。 就像我说的,这只是糖。



Answer 2:

所有的 C#嵌套类是像Java静态嵌套类:

C#:

class Outer
{
    class Inner
    {
    }
}

就像Java的:

class Outer
{
    static class Inner
    {
    }
}

换句话说,实例Inner 不必的一个实例的隐式引用Outer

没有在C#中一个Java 内部类相当于虽然。

可访问规则是两种语言之间有所不同,但:在C#中的嵌套类的代码可以访问包含类的私有成员; 在Java中它是倒过来。



Answer 3:

你可以在C#中的静态嵌套类,根据嵌套类 。



文章来源: Does C# have an equivalent of Java static nested class?