Здравствуйте, _nn_, Вы писали:
VD>>Почему не занимается? В новой студии будут C++/CLI — очень серьезное расширение С++. Можно сказать С++ с человеческим лицом .
__>Я имел ввиду Unmanaged C++.
Им занимаются копитеты по стандартизации и лично г. Страуструп. Так что скажем им спосибо за наше счастливое детство.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Чистяков Владислав (VladD2), Вы писали:
ЧВV>Статья:
ЧВV>Авторы: ЧВV> Чистяков Владислав (VladD2)
ЧВV>Аннотация: ЧВV>В статье рассказывается о новшествах которые должны появиться в новой версии языка C# — C# 2.0.
А какие изменения в тестах в 2005 ????
Кстати делегаты в том тесте проигрывают в 3 раз а не в 5 как ты везде утверждаешь.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>>А какие изменения в тестах в 2005 ????
VD>Напишем в одном из ближайших номеров.
S>> Кстати делегаты в том тесте проигрывают в 3 раз а не в 5 как ты везде утверждаешь.
VD>В каком в том?
А сколько в этой статье тестов????
Помоему один с QuikSort с дженерик делегатами, дженерик интерфейсами, чистым сравнением.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> А сколько в этой статье тестов???? S> Помоему один с QuikSort с дженерик делегатами, дженерик интерфейсами, чистым сравнением.
А причем тут еще не вышедщие дженерики?
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>> А сколько в этой статье тестов???? S>> Помоему один с QuikSort с дженерик делегатами, дженерик интерфейсами, чистым сравнением.
VD>А причем тут еще не вышедщие дженерики?
Там были результаты использования делегатов и интерфейсов в качестве компараторов.
Или их поведение сильно отличается от того дженерики они или нет?????
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> Там были результаты использования делегатов и интерфейсов в качестве компараторов. S> Или их поведение сильно отличается от того дженерики они или нет?????
Блин, ты вдумайся в свои слова. Ты говоришь о еще не выщедшей версии и к тому же сравниваешь не простой вызов и делегат, а интерфейс и делегат. Плюс сравниваешь не скорость вызова, а скорость алгоритма использующего этот вызов.
Я же говорил о разнице в скорости самого вызова делегата по сравнению с обычным вызовом. Причем о версии дотнета 1.1.
Разница на алгоритме сорировки получается годе-то около 6 раз. А разница в скорости вызова вообще тяжело вычисляется, но ежу понятно, что значитально больше.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Serginio1, Вы писали:
S>> Там были результаты использования делегатов и интерфейсов в качестве компараторов. S>> Или их поведение сильно отличается от того дженерики они или нет?????
VD>Блин, ты вдумайся в свои слова. Ты говоришь о еще не выщедшей версии и к тому же сравниваешь не простой вызов и делегат, а интерфейс и делегат. Плюс сравниваешь не скорость вызова, а скорость алгоритма использующего этот вызов.
VD>Я же говорил о разнице в скорости самого вызова делегата по сравнению с обычным вызовом. Причем о версии дотнета 1.1.
VD>Разница на алгоритме сорировки получается годе-то около 6 раз. А разница в скорости вызова вообще тяжело вычисляется, но ежу понятно, что значитально больше.
в 1.1 таже ситуация.
делегат 24
интерфейс 13
чистое сравнение 6
Значит на сам алгоритм уходит 6 секунд.
Затраты на вызов метода интерфейса 7 сек
Затраты на вызов метода делегата 18 сек.
Очень простая прифметика которая подтверждается кстати и моими тестами http://www.rsdn.ru/forum/?mid=408345
Здравствуйте, Чистяков Владислав (VladD2), Вы писали:
ЧВV>Статья:
ЧВV>Авторы: ЧВV> Чистяков Владислав (VladD2)
ЧВV>Аннотация: ЧВV>В статье рассказывается о новшествах которые должны появиться в новой версии языка C# — C# 2.0.
Опечатка :
using System;
class App
{
delegate int AlgorithmDelegate(int i);
static void Main()
{
AlgorithmDelegate test = delegate(int i) { return i * 2; };
Console.WriteLine("test(5): {0}", test(5));
}
}
Здравствуйте, Чистяков Владислав (VladD2), Вы писали:
ЧВV>Статья:
ЧВV>Авторы: ЧВV> Чистяков Владислав (VladD2)
ЧВV>Аннотация: ЧВV>В статье рассказывается о новшествах которые должны появиться в новой версии языка C# — C# 2.0.
В качестве уточнения может использоваться имя класса (при этом параметр типа должен быть унаследован от этого класса), имя интерфейса (который должен реализовать параметр типа) или new().
Так же могут успользоваться ключевые слова struct (value-тип) и class (reference-тип).
У них еще "поведение" default изменилось — наверное надо или текст изменить или сделать пометку в начале о том что некторые моменты со временем изменились и еще могут измениться.
Здравствуйте, trolik, Вы писали:
T>Так же могут успользоваться ключевые слова struct (value-тип) и class (reference-тип).
T>У них еще "поведение" default изменилось — наверное надо или текст изменить или сделать пометку в начале о том что некторые моменты со временем изменились и еще могут измениться.
Этого всего еще небыло в той альфе по которой писалась статья. В продолжении статиь (во втором номере этого года) про все это сказано.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _nn_, Вы писали:
___>>Эх, почему Microsoft не занимается обычным С++ ? __>>Так бы уже и template typedef и typeof были...
VD>Почему не занимается? В новой студии будут C++/CLI — очень серьезное расширение С++. Можно сказать С++ с человеческим лицом .
Эта статья была основана на одной из самых первых альфа-версий второго .NET-а. По этому в ней есть некоторые расхождения с текущими бэта-версиями. Так псевдо-поле T.defaulte заменено на встроенную функцию defaulte(T). Кое-какие дополнения можно найти во второй части статьи Нововведения во второй альфа-версии VS 2005 (Whidbey) и .NET Framework.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Эта статья была основана на одной из самых первых альфа-версий второго .NET-а. По этому в ней есть некоторые расхождения с текущими бэта-версиями. Так псевдо-поле T.default заменено на встроенную функцию default(T).
А как оно теперь объявляется? Получить понятно, а как реализовали объявление для своего типа??
Здравствуйте, VladD2, Вы писали:
A>>А как оно теперь объявляется? Получить понятно, а как реализовали объявление для своего типа??
VD>Не совсем понял вопрос. В общем, вот пример использования:
Что-то переклинило Уже и так понял, что к чему. Почему-то подумалось, что неплохо было бы управлять содержимым default(MyType<T>).
Я правильно понимаю, что при сравнении с любой инстаниацией дженерика будет возвращаться false?
class A<T>{}
class B
{
public void Test(A<int> testParam)
{
if(testParam != null && testParam != default(A<int>))
{
// Действия с testParam
}
return;
}
}
То есть для параметров Дженериков необходимо две проверки против одной?
А что будет в таком случае?
class A<T> where T: new()
{
private T _val = new T();
public void WhoIs(){Console.WriteLine("A<" + _val.GetType().Name + ">");}
}
class B
{
public void Test()
{
A<int> test = default(A<int>);
test.WhoIs();
}
}
Здравствуйте, Andir, Вы писали:
A>Я правильно понимаю, что при сравнении с любой инстаниацией дженерика будет возвращаться false? A>
A>class A<T>{}
A>class B
A>{
A> public void Test(A<int> testParam)
A> {
A> if(testParam != null && testParam != default(A<int>))
A> {
A> // Действия с testParam
A> }
A> return;
A> }
A>}
A>
Если под "инстаниацией" имеется в виду сравнение с экземпляром, то нет. Если testParam (а точнее A<int>) — это ссылочный тип, то default(A<int>) будет являться null-ом (а сталобыть вторая проверка не что иное как дубляж). Если же A<int> — это вэлью-тип, то сравнение с null всегда будет ложным (соотвественно проверка на неравенство истенным), а сравнение с default(A<int>) будет производиться по значению (и выдаст истину если testParam заполнен нулями и null-ами).
Ну, и естествнно, если для типа определен оператор стравнения, то будет вызван именно он.
A>То есть для параметров Дженериков необходимо две проверки против одной?
Дженерики такие же в точности типы. Вообщем, все что написано в этом статье относительно инициализации дженериков верно. Изменился только синтаксис получения значения по умолчанию.
A>А что будет в таком случае?
A>
A>class A<T> where T: new()
A>{
A> private T _val = new T();
A> public void WhoIs(){Console.WriteLine("A<" + _val.GetType().Name + ">");}
A>}
A>class B
A>{
A> public void Test()
A> {
A> A<int> test = default(A<int>);
A> test.WhoIs();
A> }
A>}
A>
Будет исключение NullReferenceException в вделенном жирным коде, так как default для ссылочных типов всегда равен null-у. Если А объявить как структуру, то код просто не скомпилируется, так как для структур запрещена инлайн-инициализация и конструктроры без параметров. Поверь все это сделано не случайно. Под этими решениями лежит нехилая логическая база.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Будет исключение NullReferenceException в вделенном жирным коде, так как default для ссылочных типов всегда равен null-у. Если А объявить как структуру, то код просто не скомпилируется, так как для структур запрещена инлайн-инициализация и конструктроры без параметров. Поверь все это сделано не случайно. Под этими решениями лежит нехилая логическая база.
Верю, верю ... искал понимание, понимание пришло Немного себе не так представлял механизм default, думал, что это некоего рода маркер для значений дженериков. Обшибся. Исправлюсь