C#是否具有Java静态嵌套类的等价物?

我正在将Java转换为C#并具有以下代码(请参阅Java Context中关于其使用的讨论 )。 一种方法可能是创建一个单独的文件/类,但是有一个C#idom保留了Java代码中的意图吗?

public class Foo { // Foo fields and functions // ... private static class SGroup { private static Map idMap = new HashMap(); public SGroup(int id, String type) { // ... } } } 

看看这个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(…)或new InnerClass(o,…)。 是的,这只是一堆动人的新词。 就像我说的,它只是糖。

所有 C#嵌套类都类似于Java静态嵌套类:

C#:

 class Outer { class Inner { } } 

就像Java一样:

 class Outer { static class Inner { } } 

换句话说, Inner的实例没有Outer实例的隐式引用。

但是在C#中没有相当于Java的内部类。

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

根据嵌套类 ,您可以在C#中拥有静态嵌套类 。