C# doesn’t have Java’s inner classes at all , in fact – all nested classes in C# are like Java’s static nested classes. Java doesn’t have static classes (which don’t have any instance constructors, and can’t be used for variables, parameters etc) Java doesn’t have any equivalent to the C# 3.0 anonymous types.