Мат операции с классами

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Мат операции с классами

Сообщение GAGArin » 24.05.2006 (Ср) 20:52

Есть у меня два экземпляра собственного класса. Мне хочется дать юзверю возможность их складывать (вычитать, умножать, сравнивать)

Я могу дать классу метод типа "сложение", который попросит второй экземпляр и вернет сумму.
Но хотелось бы, чтобы в проге можно было писать
Код: Выделить всё
c=a+b

где все три - экземпляры моего класса. Это вообще реализуемо?
(сори если вопрос сильно идиотский)

Add:
И еще вопросик, как дать своему классу возможность генерировать исключения? (по этой теме еще не искал)

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 24.05.2006 (Ср) 21:40

В Visual Basic 2005 есть operator overloading.

Исключения генерируются методом Throw, кидать можно свои объекты исключений (наследующие Exception).
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 24.05.2006 (Ср) 21:43

Т.е. с моей 2003 студией мне лучше отойти в сторонку? Ну ладно, давно собирался перейти на 2005, вот и решающий довод.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 25.05.2006 (Чт) 7:44

GAGArin

Ну, в 2003 можно просто сделать некий класс с шаровыми методами
Subtract(Y as YourClass, x as YourClass) as double
Sum(Y as YourClass, x as YourClass) as double
Divide(Y as YourClass, x as YourClass) as double
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 25.05.2006 (Чт) 8:32

Sebas
Это понятно, но мне приятнее писать a+b чем MyClass.Sum(a,b) собственно говоря эту приятность я и хотел реализовать.

Просто он пишет конкретно например:
Оператор - для типов MyClass и MyClass не определен
. Значит его можно таки определить. Или никак?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 25.05.2006 (Чт) 8:40

или никак
Весь мир матрица, а мы в нем потоки байтов!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 25.05.2006 (Чт) 10:07

Sebas
а можно небольшой примерчик? на C# видел (2003 (и даже сам делал)) а вот на Visual Basic :oops:

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 25.05.2006 (Чт) 13:23

Ramzes писал(а):Sebas
а можно небольшой примерчик? на C# видел (2003 (и даже сам делал)) а вот на Visual Basic :oops:


примерчик чего?!??!?!?!
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 25.05.2006 (Чт) 13:34

перегрузки оперторов, MSDN под рукой нет (в онлайновый доступа давно нет), VS2005 тоже нет :cry: а поглядеть оцень хоца :oops: ну плиз. Просто никаогда такого чуда на Visal basic не видел :roll:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.05.2006 (Чт) 13:41

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 25.05.2006 (Чт) 14:32

Да... млин... судя по всему в 2003 можно только в C# такое делать - судя по книги Рихтера - сам никогда не делал (не было надобности).

Не знал :(

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 25.05.2006 (Чт) 14:39

да и вообще, мелкомягки очень постарались и сильно улучшили наш (к кому не относится камнями в мой огород не бросать) любмый язык, что очень сильно радует :)

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 25.05.2006 (Чт) 17:07

Угу, уже нашел это в MSDN перегрузка операторов в VS2003 только на C#


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 90

    TopList