static void Main(string[] args) { var ci = new Circle(5, new Circle(3)); Console.WriteLine(ci.GetArea()); Console.WriteLine(ci.Child?.Child?.GetArea() ?? 0); // ……6 4と同様、null伝播演算子を用いた例。 // この場合、内円の内円は設定されておらず、nullを返すため、「0」が出力される。 Console.WriteLine(ci.GetAreaWithoutChildArea()); Console.WriteLine(ci.ToString()); /* 実行結果 78.5398163397448 0 50.2654824574367 02時13分31秒 - Area: 78.5398163397448 , HasChild: Yes */ }
GetArea() - Child?.GetArea() ?? 0; // ……4 3と同様に式形式で表現した関数を宣言する。 // null伝搬演算子(?.)を用いて、Childプロパティの値がnullでない場合は、 // 外円の面積から内円の面積を除いた面積を求める。 // 内円が設定されていない場合は、GetArea()と同様の挙動を示す。 public Circle(int radius, Circle child = null) { this.Radius = radius; this.Child = child; }