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#中嵌套类定义的使用像命名空间一样工作。类似嵌套的命名空间在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");
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");
只需观察一下,像这样嵌套的类几乎*总是*使事情更难找到。 – 2011-12-27 00:24:04
这肯定会影响程序员的表现。 – BoltClock 2011-12-27 00:24:41
我确信没有性能方面的影响,但是您是否真的想每次创建一个正方形时都必须编写'shape.rectangle.square'? – zneak 2011-12-27 00:26:32