在c#中,像类嵌套这样的命名空间对性能有影响吗?

本文关键字:命名空间 性能 有影响 嵌套 | 更新日期: 2023-09-27 18:19:00

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";

这是一个有点随意的例子,但它展示了c#中嵌套类定义的使用,就像名称空间一样。

内部类也可以继承外部类和类似的类,但类似命名空间的行为是相同的。

除了我在"shape"中用"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");

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");

在c#中,像类嵌套这样的命名空间对性能有影响吗?

我想知道这是否有任何性能方面的考虑?

。这在编译时可能会影响几纳秒。

类允许嵌套类型。这有时用于(private)'helper'类和强相关的enum。但它是关于结构和组织,而不是绩效。

一般来说,最好避免使用公共嵌套类。公共枚举更为常见。