Объектно-ориентированное программирование на С#. Андрианова А.А - 56 стр.

UptoLike

56
Класс может содержать методы для осуществления операции
преобразования в другие типы данных или из них. Они реализуются с
помощью перегрузки специальных операторов.
Оператор преобразования к типу данных имеет вид:
operator имяТипа(Операнд); // имяТипа – имя оператора
Этот оператор не имеет возвращаемого типа, поскольку он совпадает с
именем оператора. Данная операция является унарной.
Операция преобразования может быть явной или неявной. Это
указывается с помощью ключевых слов explicit или implicit. Класс
может содержать только одно из этих двух преобразований. Например,
определим в классе Matrix неявное преобразование целого числа в
матрицу, результатом которого будет квадратная матрица, размер которой
задан этим числом.
// операция неявного преобразования целого числа в матрицу
public static implicit operator Matrix(int n)
{
Matrix m = new Matrix(n, n);
m.InputMatrix();
return m;
}
Вызов данного метода осуществляется так:
Matrix a = 5; // создание матрицы размера 5 х 5
Также определим в классе Matrix явное преобразование матрицы в
вещественное число, в результате которого будет возвращаться значение
определителя матрицы.
// операция преобразования матрицы в вещественное число -
// ее определитель
public static explicit operator double(Matrix m)
{
return m.Determinant();
}
Вызов данного метода осуществляется только при явном
преобразовании типов:
     Класс может содержать методы для осуществления операции
преобразования в другие типы данных или из них. Они реализуются с
помощью перегрузки специальных операторов.
     Оператор преобразования к типу данных имеет вид:

      operator имяТипа(Операнд);       // имяТипа – имя оператора

      Этот оператор не имеет возвращаемого типа, поскольку он совпадает с
именем оператора. Данная операция является унарной.
      Операция преобразования может быть явной или неявной. Это
указывается с помощью ключевых слов explicit или implicit. Класс
может содержать только одно из этих двух преобразований. Например,
определим в классе Matrix неявное преобразование целого числа в
матрицу, результатом которого будет квадратная матрица, размер которой
задан этим числом.

      // операция неявного преобразования целого числа в матрицу
      public static implicit operator Matrix(int n)
     {
         Matrix m = new Matrix(n, n);
         m.InputMatrix();
         return m;
     }

       Вызов данного метода осуществляется так:

     Matrix a = 5;      // создание матрицы размера 5 х 5

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

      // операция преобразования матрицы в вещественное число -
      // ее определитель
      public static explicit operator double(Matrix m)
      {
         return m.Determinant();
      }

     Вызов данного        метода   осуществляется   только   при   явном
преобразовании типов:




56