Обобщенные структуры

В C# разрешается создавать обобщенные структуры. Синтаксис для них такой же, как и для обобщенных классов. В качестве примера ниже приведена программа, в которой создается обобщенная структура XY для хранения координат X, Y.

// Продемонстрировать применение обобщенной структуры,

using System;

// Эта структура является обобщенной,

struct XY<T> {

  T х;

  T y;

  public XY(T а, T b) {

    х = а;

    y = b;

  }

  public T X {

    get { return х; }

    set { х = value; }

  }

  public T Y {

    get { return y; }

    set { y = value; }

  }

}

class StructTest {

  static void Main() {

    XY<int> xy = new XY<int>(10, 20);

    XY<double> xy2 = new XY<double>(88.0, 99.0);

    Console.WriteLine(xy.X + ", " + xy.Y);

    Console.WriteLine(xy2.X + ", " + xy2.Y);

  }

}

При выполнении этой программы получается следующий результат.

10, 20

88, 99

Как и на обобщенные классы, на обобщенные структуры могут накладываться ограничения. Например, на аргументы типа в приведенном ниже варианте структуры XY накладывается ограничение типа значения.

struct XY<T> where Т : struct {

// ...