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#でパフォーマンスが賢明に関係しますか?
内側のクラスも外側のものと同様に継承することができますが、動作のような名前空間は同じです。
「シェイプ」で「パブリック矩形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");
ちょうど、このような入れ子のクラスは、ほとんど常に*見つけることが難しくなります。 –
これは確かにプログラマーのパフォーマンスに影響します。 – BoltClock
パフォーマンス上の影響はないと確信していますが、正方形を作成するたびに 'shape.rectangle.square'を書く必要が本当にありますか? – zneak