Еще когда я был C++ разработчиком, я любил шаблоны. Возможность написания обобщенных классов подняли искусство программирования на новый уровень.
К сожалению, когда вышел .NET 1.0, там не было эквивалента шаблонам. Однако с .NET 2.0, мы окончательно получили обобщения, которые позволили нам еще раз взмахнуть крыльями и программировать более обобщенно в мире .NET.
Однако, обобщения C# иногда введут себя совсем иначе, чем ихние двоюродные братья C++ шаблоны. Существует одно удобное положение, которое поможет обойти эти воды и сделает ваши обобщения более мощными…
Форум → Программирование → Пыхнуть хотите? → F.A.Q. → C#/.NET маленькие чудеса: ограничение обобщений при помощи условия where
C#/.NET маленькие чудеса: ограничение обобщений при помощи условия where
-
Попробовал перевести C#/.NET Little Wonders: Constraining Generics with Where ClauseСпустя 19 сек.Упс, перевод здесь - http://gautama-it.blogspot.com/2011/01/cnet-where.html
-
-
-
21 января 2011 г. 1:37, спустя 5 минут 24 секунды
kostyl, ты гитару ни рзу не видел? чо так разглядываешь?Сапожник без сапог -
21 января 2011 г. 1:40, спустя 2 минуты 46 секунд
ты гитару ни рзу не видел? чо так разглядываешь?
я играю в это время, не понятно конечно, но я вроде Моцарта валю в это время ;) -
21 января 2011 г. 3:00, спустя 1 час 20 минут 18 секунд
нормальная аватара. Дуд, тебе лишь бы доебатьсяСпустя 38 сек.по сабжу: а вот если я понятия не имею о всех этих шаблонах ваших из сишки - я хуевый программист значит?Спустя 40 сек.не, ну как, я что-то там краем уха слышал, там какие-то списки вроде, <> - от такие знаки фигурируют, но что это - беспонятияСпустя 46 сек.ну, я как бы и без этого славно программирую на аяксе, может оно мне и не нужно? -
21 января 2011 г. 3:01, спустя 42 секунды
Как обобщенный тип может быть ссылочным типом, также само он может быть и типом значений.
:DYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
-
-
21 января 2011 г. 4:04, спустя 1 час 1 минуту 59 секунд
Абырвалг, там примерно, смысл такой, что можно написать класс или метод, который работает с обобщенным типом данных.
То есть алгоритм, который, например, делает одно и тоже для чисел, строк, массивов, можно обобщить и сделать его более абстрактным. В этом случае ты пишешь, тот же алгоритм, который работает с обобщенным типом (например, типом значений, а это обычные примитивные типы, структуры и так далее). Потом, ты вызываешь уже этот метод, подставляя вместо обобщенного типа свой конкретный, например, ты хочешь, что бы метод работал с int. И ахуенчик, оно компилируется в полноценный метод с интом.
Или, другой пример, есть списки (List), они работают с обобщенными типами данных (generic type), при создании объекта списка, ты конкретезируешь типы элементов, которые будут в нем хранится:
List<int> listOfInts = new List<int>();
И он так же само будет работать для строк и так далее. Оно скомпилируется в полноценный список интов.
Один из самых больших плюсов это строгая типизация здесь. Почему?
Потому, что можно было достичь такого же эффекта и без обобщений. Например,
ArrayList listOfAnyObjects = new ArrayList();
Этот список будет хранить любые объекты, и инты и строки и т.д. Как в php - обычный массив. И о любых ошибках ты будешь узнавать во время выполнения.
Если ты используешь, обобщения, то получишь ошибки на стадии компиляции, ибо обобщения компилируются в обычный полноценный класс, уже с конкретным типом данных, который ты укажешь.
Короче, как по мне, так оно приятно, у меня уже даже почти получилось это применить. Пытаюсь написать библиотеку валидаторов, которая будет валидировать обобщенный тип, но последнее время сомневаюсь, что так правильно.ну, я как бы и без этого славно программирую на аяксе, может оно мне и не нужно?
Я думаю, парится не стоит, ибо оно и не как не подойдет в мир php и javascript, там такие ситуации разруливаются по-своему. Те задачи, которые я решаю на C#, например, также и решаются на php, да много не хватает после C#. Но это не есть проблема, здесь не хуже, здесь по-другому. Поэтому парится не стоит
Блять, ну я написал, надеюсь, ты хоть, что-то поймешь
P.S Ненавижу такие фразы, но у меня это уже как ритуал
Блять, ну я написал, надеюсь, ты хоть, что-то поймешь
Спустя 199 сек.я играю в это время, не понятно конечно, но я вроде Моцарта валю в это время
Сколько времени ты учился, что бы сыграть Моцарта? По нотам играешь? -
21 января 2011 г. 10:38, спустя 6 часов 34 минуты 28 секунд
Сколько времени ты учился, что бы сыграть Моцарта? По нотам играешь?
да за 5 минут подобрал кусочек, ты же не слышал как я играл (я имею в виду не факт что я качественно это делал), вот только не знаю Моцарт это или нет, это кусок из фильма "Концерт" где цыган на скрипке валит (прикольный момент там есть)
Пожалуйста, авторизуйтесь, чтобы написать комментарий!