static void Main(String[] args) { // 协变 IIndex <Rectangle> rectangles = GenericsRectangle.GetRectangle(); IIndex <Shape> shapes = rectangles; // 使用接口中的索引器和Count属性 for (int i = 0; i < shapes.count; i++) { Console.WriteLine(shapes[i]); } // 抗变 IDisplay <Shape> shapeDisplay = new ShapeDisplay(); IDisplay <Rectangle> rectangleDisplay = shapeDisplay; rectangleDisplay.Show(rectangles[0]); Console.Read(); }
public static GenericsRectangle GetRectangle() { // ??为合并运算符:若gr为null将调用运算符右侧以创 // 建一个GenericsRectangle实例,并将其赋给变量gr return(gr ?? (gr = new GenericsRectangle())); }