| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Ограничить тип аргумента генерикса? |
| Автор: Dims 3.11.2008, 20:20 |
| Можно ли указать, что аргумент генерикса должен быть подтипом определённого типа или имплементить определённый интерфейс? Например, можно ли ограничить, чтобы аргументы были только числовыми типами? |
| Автор: Bogdan1024 3.11.2008, 20:31 | ||
|
| Автор: Dims 3.11.2008, 21:03 |
| Пасиб. |
| Автор: Dims 4.11.2008, 17:59 | ||
А если надо ограничить именно до числового типа, например
ругается. Как сделать? |
| Автор: Bogdan1024 4.11.2008, 18:03 |
| Тогда тебе не нужны дженериксы. int, uint, single и много чего другого неявно преобразуются в дабл и т.д.. |
| Автор: Dims 4.11.2008, 18:07 | ||
Это точно? |
| Автор: PashaPash 4.11.2008, 18:12 |
Не совсем. С варнингом про потерю точности. |
| Автор: Bogdan1024 4.11.2008, 18:14 | ||
Не, в памяти int хранится как int, если ты об этом Почитай про: Implicit Numeric Conversions Table Тупо всё преобразуется в decimal. Большинство математических функций могут его принять в качестве параметра. |
| Автор: Dims 4.11.2008, 22:51 | ||||
Насколько я понимаю, implicit conversion это просто неявное преобразование. То есть, например, в этой таблице есть строка From float To double. Это значит, что я могу писать
и мне не надо писать так
то есть, преобразовывать явно. Но это вовсе не значит, что при вычислении 2.0f + 3.1f аргументы сперва преобразуются в double или decimal. Короче, наверное, нельзя. Добавлено через 1 минуту и 23 секунды Можно пример? |
| Автор: Partizan 5.11.2008, 19:26 | ||
Очевидно, что в результате преобразования double -> float или double -> int произойдёт потеря точности... |
| Автор: Dims 6.11.2008, 21:42 |
| Я хотел пример варнинга про потерю точности. |