// Продемонстрировать применение статического класса.
static class NumericFn {
// Возвратить обратное числовое значение, static public double Reciprocal(double num) { return 1/num;
}
// Возвратить дробную часть числового значения, static public double FracPart(double num) { return num - (int) num;
}
// Возвратить логическое значение true, если числовое // значение переменной num окажется четным, static public bool IsEven(double num) { return (num % 2) ==0 ? true : false;
}
// Возвратить логическое значение true, если числовое // значение переменной num окажется нечетным, static public bool IsOdd(double num) { return !IsEven(num);
}
}
class StaticClassDemo { static void Main() {
Console.WriteLine('Обратная величина числа 5 равна ' +
NumericFn.Reciprocal(5.0) ) ;
Console.WriteLine('Дробная часть числа 4.234 равна ' +
NumericFn.FracPart(4.234));
if(NumericFn.IsEven(10))
Console.WriteLine('10 — четное число.');
if(NumericFn.IsOdd(5))
Console.WriteLine('5 — нечетное число.');
// Далее следует попытка создать экземпляр объекта класса NumericFn, // что может стать причиной появления ошибки.
// NumericFn ob = new NumericFn(); // Ошибка!
}
}
Вот к какому результату приводит выполнение этой программы.
Обратная величина числа 5 равна 0.2 Дробная часть числа 4.234 равна 0.234
10 — четное число.
5 — нечетное число.
Обратите внимание на то, что последняя строка приведенной выше программы закомментирована. Класс NumericFn является статическим, и поэтому любая попытка создать объект этого класса может привести к ошибке во время компиляции. Ошибкой будет также считаться попытка сделать нестатическим член класса NumericFn.
И последнее замечание: несмотря на то, что для статического класса не допускается наличие конструктора экземпляра, у него может быть статический конструктор.
ГЛАВА 9 Перегрузка операторов
В языке C# допускается определять назначение оператора по отношению к создаваемому классу. Этот процесс называется
Когда оператор перегружается, ни одно из его первоначальных назначений не теряется. Он просто выполняет еще одну, новую операцию относительно конкретного объекта. Поэтому перегрузка оператора +, например, для обработки связного списка не меняет его назначение по отношению к целым числам, т.е. к их сложению.
Главное преимущество перегрузки операторов заключается в том, что она позволяет плавно интегрировать класс нового типа в среду программирования. Подобного ро^а расширяемость типов является важной составляющей эффективности такого объектно-ориентированного языка программирования, как С#. Как только для класса определяются операторы, появляется возможность оперировать объектами этого класса, используя обычный синтаксис выражений в С#. Перегрузка операторов является одной из самых сильных сторон языка С#.
Основы перегрузки операторов
Перегрузка операторов тесно связана с перегрузкой методов. Для перегрузки оператора служит ключевое слово operator, определяющее
