2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Перегруженные операторы в С#
Сообщение20.05.2009, 22:53 
Всем привет!
Я правильно поняла, что в C# нельзя перегруженные операторы сделать виртуальными? (В С++ можно было). Это во-первых.
И во-вторых, перегрузка оператора инкремента(декремента) в префексной и постфиксной формах возможна в С#? Или только один вариант? :o

 
 
 
 Re: Перегруженные операторы в С#
Сообщение21.05.2009, 00:02 
Аватара пользователя
Lotos в сообщении #215649 писал(а):
Я правильно поняла, что в C# нельзя перегруженные операторы сделать виртуальными? (В С++ можно было). Это во-первых.
Нельзя.
Можно сдалать виртуальную функцию и использовать ее в операторе.

Lotos в сообщении #215649 писал(а):
И во-вторых, перегрузка оператора инкремента(декремента) в префексной и постфиксной формах возможна в С#? Или только один вариант? :o
C# specification говорит следующее:
Цитата:
An operator ++ or operator -- implementation can be invoked using either postfix or prefix notation.
It is not possible to have separate operator implementations for the two notations.
То есть оператор ++ или -- изменяет объект, а что он будет возвращать, решается на основании того, префиксно он вызывается или постфиксно: если используется префиксная нотация, то возвращается значение, возвращаемое оператором, если постфиксная - то исходное значение объекта.

 
 
 
 Re: Перегруженные операторы в С#
Сообщение21.05.2009, 21:44 
В языке C++ для того, чтобы отличать две формы операторы инкремента был входящий булевый параметр, который играл роль флага для компилятора. А как же в С# организовать две функции перегруженного оператора инкремента?

 
 
 
 Re: Перегруженные операторы в С#
Сообщение22.05.2009, 10:09 
Аватара пользователя
Вы определяете один оператор ++
После этого он может использоваться как префиксный и как суффиксный.
Реализовать принципиально различную логику для префиксного и суффиксного оператора ++ нельзя.

 
 
 
 Re: Перегруженные операторы в С#
Сообщение22.05.2009, 15:25 
Cпасибо за ответ. :(

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group