Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Шаблоны


Автор: kurzon 17.10.2007, 16:23
У меня учитель убеждает что в С# нет шаблонов.

Автор: archeg 17.10.2007, 16:31
Цитата(kurzon @  17.10.2007,  16:23 Найти цитируемый пост)
У меня учитель убеждает что в С# нет шаблонов.

А в шарпе есть шаблоны????
Насколько знаю, там только дженерики smile  

Автор: kurzon 17.10.2007, 16:36
Дженерики ето что?

Автор: zaver 17.10.2007, 16:50
это логическое продолжение шаблонов

Автор: QryStaL 17.10.2007, 17:25
Наверное имеются в виду дженерики, которые появились в версии 2.0. По сути, это шаблоны и есть =)

Автор: archeg 17.10.2007, 19:33
Цитата(QryStaL @  17.10.2007,  17:25 Найти цитируемый пост)
Наверное имеются в виду дженерики, которые появились в версии 2.0. По сути, это шаблоны и есть =) 

Впринципе понятия довольно похожи в использовании, но большинство авторов утверждают что дженерики это не шаблоны. Там есть очень существенные отличия. Я не специалист по сях, потому немогу сказать какие (

Автор: OLEG_NET 17.10.2007, 20:44
Смотря,что понимать под шаблоном.Хотя конечно отличия есть,но очень не существенные.Допустим в шарпе можно обобщать интерфейсы,а с++ их вообще нет.    

Автор: tol05 17.10.2007, 21:24
Цитата(OLEG_NET @  17.10.2007,  20:44 Найти цитируемый пост)
Смотря,что понимать под шаблоном.

у нас уже был недавно вопрос типа "смотря что понимать под классом"  smile , помнишь, archeg?

Чуть не рехнулись, пока отвечали  smile 
------------------------------------------------------------------------------------------------------------------------------------------

Разница между генериками и шаблонами хорошо объясняется только для тех, кто знает, что такое шаблоны. Т.е. для специалистов С++
Для всех остальных - просто пишут "генерики - это smile  smile  smile "

Поэтому я поискал инфу не просто в msdn, а в msdn для плюсовиков. И нашел вот что:
Цитата

C++ Language Reference  
Overview of Generics in C++  


Why Generics?

C++ supports templates and both templates and generics support parameterized types to create typed collection classes. However, templates provide compile-time parameterization. You cannot reference an assembly containing a template definition and create new specializations of the template. Once compiled, a specialized template looks like any other class or method. In contrast, generics are emitted in MSIL as a parameterized type known by the runtime to be a parameterized type; source code that references an assembly containing a generic type can create specializations of the generic type. For more information on the comparison of C++ templates and generics, see Generics and Templates.
http://msdn2.microsoft.com/en-us/library/c570k3f3(VS.80).aspx

ИМХО, в отличие от некоторых msdn-статей, это - написана просто отлично!

Разница в том, что шаблон генерируется "намертво" при компиляции, а генерик - в рантайме, да не намертво, а с возможностью перегенерации своего кода.

Автор: MichaelMakarov 18.10.2007, 11:17
Цитата(kurzon @ 17.10.2007,  16:23)
У меня учитель убеждает что в С# нет шаблонов.

Не спорь с учителем  smile 

З.Ы. Это, имхо, скорее вопрос религии.... считать ли дженерики шаблонами.

Автор: kurzon 18.10.2007, 13:54
Цитата(MichaelMakarov @ 18.10.2007,  11:17)
Цитата(kurzon @ 17.10.2007,  16:23)
У меня учитель убеждает что в С# нет шаблонов.

Не спорь с учителем  smile 

З.Ы. Это, имхо, скорее вопрос религии.... считать ли дженерики шаблонами.

Ты прав...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)