ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Вопрос? Перегрузка операторов в C#
  #1  
Старый 29.08.2006, 14:40
Аватар для NeuRonix
NeuRonix
Познающий
Регистрация: 05.03.2006
Сообщений: 50
Провел на форуме:
647440

Репутация: 44
Отправить сообщение для NeuRonix с помощью ICQ
По умолчанию Вопрос? Перегрузка операторов в C#

Читаю книгу “Шилдт Полный справочник по С#”

У меня вопрос? Я не хрена не понял, что там Шилдт наколбасил про перегрузки операторов,
мог бы кто нибуть объяснить поподробней, кое-что, конечно, понял, но не все.

И если можно, то приведите пример с комментариями или ссылку дайте, где можно
прочитать, чтоб там все понятно расписано было и c примерами.

Последний раз редактировалось NeuRonix; 23.09.2006 в 12:09..
 
Ответить с цитированием

  #2  
Старый 29.08.2006, 14:59
Аватар для tclover
tclover
Banned
Регистрация: 13.12.2005
Сообщений: 1,091
Провел на форуме:
9751364

Репутация: 1847


По умолчанию

Ты имеешь ввиду перегрузку функций?
 
Ответить с цитированием

  #3  
Старый 29.08.2006, 15:12
Аватар для NeuRonix
NeuRonix
Познающий
Регистрация: 05.03.2006
Сообщений: 50
Провел на форуме:
647440

Репутация: 44
Отправить сообщение для NeuRonix с помощью ICQ
По умолчанию

Честно говоря, я не знаю, может это одно и тоже плоховато у меня с программированием просто жуть )
Давай и про перегрузку функций объясни, не помешает.
 
Ответить с цитированием

  #4  
Старый 29.08.2006, 15:36
Аватар для tclover
tclover
Banned
Регистрация: 13.12.2005
Сообщений: 1,091
Провел на форуме:
9751364

Репутация: 1847


По умолчанию

хз, я не учитель ... Вообщем если изменять тип и/или количество параметров передаваемых функции, то это и будет называться её перегрузкой.
зы Это конечно не претендует на лучшее описание.
 
Ответить с цитированием

  #5  
Старый 31.08.2006, 15:24
Аватар для NeuRonix
NeuRonix
Познающий
Регистрация: 05.03.2006
Сообщений: 50
Провел на форуме:
647440

Репутация: 44
Отправить сообщение для NeuRonix с помощью ICQ
По умолчанию

Все разобрался, точнее, помогли, оказалось довольно просто.

На примере операции "+".
Этот символ обозначает разные операции.
Например 1+1 --- опирация сложения чисел (ответ 2)
А если "1" -- строка, то + будет складывать именно строки, а не их значения.
Алгоритм этого действия другой и в ответе уже будет "11" -- склейка этих строк.


Получается, что результат одной и той же операции зависит от того что мы складываем (это естественно).

По умолчанию, язык C# не в курсе как складываются точки (Point).
Поэтому его нужно этому учить:

код C#
public static Point operator +(Point cl1, Point cl2)

Внутри ты можешь поставить любую реализацию (даже попарно умножить их).
Мы только что научили C# складывать Точки.
Можно научить умножать Точку на число:

код C#
public static Point operator *(int cl1, Point cl2)

Можно эту же операцию применить к скалярному умножению точек:
код C#
public static int operator *(Point cl1, Point cl2)

И так далее....
В последних двух примерах мы и сталкиваемся с перегрузкой.
Т.е. Когда один и тот же оператор (*) имеет разные реализации (но!, что важно для разных аргументов).


Как же компилятор определяет какую реализацию выбрать?
Очень просто:
Если ты перемножаешь число и Точку (именно в этом порядке ), то нужно выбирать первую реализацию, если две точки, то вторую.

код C#
Point cl1 = new Point(1, 5);
Point cl2 = new Point(-8, 10);
int i = 5;


Point cl3 = i * cl2; // Можно было написать 5 * cl2
// cl3 = cl2 * i --- выдаст ошибку компиляции, ведь мы не написали (не определили),
// что делать если первый параметр точка, а второй число :thumbs-up

int j = cl1 * cl2;
 
Ответить с цитированием

  #6  
Старый 29.09.2006, 16:00
Аватар для fen
fen
Познающий
Регистрация: 23.09.2006
Сообщений: 45
Провел на форуме:
308259

Репутация: 20
Отправить сообщение для fen с помощью ICQ
По умолчанию

Цитата:
Сообщение от NeuRonix  
Честно говоря, я не знаю, может это одно и тоже плоховато у меня с программированием просто жуть )
Давай и про перегрузку функций объясни, не помешает.
канешно многовато написал.. в подробностях и на примерах... но tclover одним предложением все разъяснил )
 
Ответить с цитированием

  #7  
Старый 29.09.2006, 16:26
Аватар для NeuRonix
NeuRonix
Познающий
Регистрация: 05.03.2006
Сообщений: 50
Провел на форуме:
647440

Репутация: 44
Отправить сообщение для NeuRonix с помощью ICQ
По умолчанию

fen- Я рад за тебя, что ты все так быстро схватываешь, мне надо было добраться до сути
перегрузки я плохо понимал перегрузку, плоховато у меня было с перегрузкой, но сейчас все
отлично все приходит с опытом.

Удачного кодинга тебе fen.
 
Ответить с цитированием

  #8  
Старый 29.09.2006, 21:11
Аватар для W!z@rD
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

Хы... Вобщем я тоже начал изучать C#... по книге:
"Программирование для Microsoft Windows на C#"
Кто что может сказать насчет это книги?
Кто что может посоветовать?
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #9  
Старый 29.09.2006, 23:45
Аватар для nc.STRIEM
nc.STRIEM
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме:
3493315

Репутация: 1228


Отправить сообщение для nc.STRIEM с помощью ICQ
По умолчанию

Цитата:
Сообщение от fen  
канешно многовато написал.. в подробностях и на примерах... но tclover одним предложением все разъяснил )
Он расказал про перегруженные функции! а перегруженне функции и перегруженные операторы это две обсолютно разные вещи!
p.s. есть еще перегруженные перегруженные операторы

Последний раз редактировалось nc.STRIEM; 29.09.2006 в 23:49..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Proxy FAQ foreva Чужие Статьи 12 04.01.2008 12:15
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48
ВОПРОС ЗНАТОКАМ Hrust Болталка 12 23.01.2005 19:31
Вопрос... Black_Death Болталка 1 05.01.2005 04:56
Вопрос к ОТЦАМ!!!!!! Xalegi Болталка 8 22.12.2004 01:36



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ