Ватсон Карли
Шрифт:
Компиляция и выполнение этого кода создает показанные ниже результаты:
Перезагрузка
В начале важно отметить, что перезагрузка операторов не определена в CLS. Однако CLS обращается к ней, потому что языки, обеспечивающие ее функциональность, делают это способом, который могут понять другие языки. Таким образом, языки, которые не поддерживают перезагрузку операторов, все-таки имеют доступ к базовой функциональности. Java является примером языка, который не поддерживает перезагрузку операторов, — ни одна из концепций, рассмотренных в этом разделе, не может ее использовать. Спецификация среды .NET включает ряд рекомендаций для проведения перезагрузки операторов.
□ Определите операторы на типах данных значений, которые логически являются встроенным типом языка (таким, как
□ Используйте методы перезагрузки операторов, включающие только тот класс, на котором определены методы.
□ Применяйте соглашения об именах и сигнатурах, описанные в CLS.
□ Перезагрузка операторов полезна в случаях, где точно известно, каким будет результат операции.
□ Предоставьте альтернативные сигнатуры. Не все языки поддерживают вызов перезагруженных операторов. Поэтому постарайтесь всегда включать вторичный метод с подходящим специфическим для домена именем, который имеет эквивалентную функциональность.
Перезагрузка операторов связана как с определенными пользователем преобразованиями, так и с типом данных, а не с экземпляром. Это означает, что она связана со всем типом данных, а не с каким-то одним экземпляром объекта, то есть операция всегда должна быть
В нижеследующем примере создается тип данных значения