在C#中,许多类似嵌套的命名空间是否与性能有关?

ala*_*ere 2 c# nested namespaces class object

public class shape
{
    public int x, y;

    public class triangle
    {
        int sides = 3;
    }

    public rectangle rect = new rectangle();

    public class rectangle
    {
        int sides = 4;

        public class square
        {
            public string s;
        }
    }
}

shape a = new shape();
a.x = 4;
a.y = 3;
//print(a.triangle.sides) //no such thing
//print(a.rect.sides) //prints 4
shape.rectangle.square d = new shape.rectangle.square();
d.s = "abc";
Run Code Online (Sandbox Code Playgroud)

这是一个有点武断的例子,但它显示了在C#中使用嵌套类定义来像命名空间一样工作.

内部类也可以从外部类继承,例如井,但类似行为的命名空间是相同的.

除非我在"形状"中使用"public rectangle rect = new rectangle();" 内部阶级不是外部阶级的一部分.它更像是它们都有相似的名称,例如它们可以被取消堆叠,并用下划线重写"shape_rectangle_square d = new shape_rectangle_square();".

我想知道是否有任何性能考虑因素,例如在这种情况下.

shape.triangle t = new shape.triangle();

List<shape.triangle> triangles = new List<shape.triangle>();

triangles.Add(new shape.triangle());

foreach (shape.triangle t in triangles)

func(new shape.triangle(1, 2, 3), "ted");
Run Code Online (Sandbox Code Playgroud)

VS

shape_triangle t = new shape_triangle();

List<shape_triangle> triangles = new List<shape_triangle>();

triangles.Add(new shape_triangle());

foreach (shape_triangle t in triangles)

func(new shape_triangle(1, 2, 3), "ted");
Run Code Online (Sandbox Code Playgroud)

Hen*_*man 7

我想知道是否有任何性能考虑因素?

不.编译时可能需要几纳秒.

类允许嵌套类型.这有时用于(私人)'帮助'类和强烈相关的enums.但它是关于结构和组织,而不是关于绩效.

通常,最好避免使用公共嵌套类.公共枚举更为常见.