Нововведения в C# 2.0
От: Чистяков Владислав (VladD2) Российская Империя www.nemerle.org
Дата: 30.01.04 15:12
Оценка: 1226 (33) +1
Статья:
Нововведения в C# 2.0
Автор(ы): Владислав Чистяков (VladD2)
Дата: 24.06.2004
В статье рассказывается о новшествах, которые должны появиться в новой версии языка C#



Авторы:
Чистяков Владислав (VladD2)

Аннотация:
В статье рассказывается о новшествах которые должны появиться в новой версии языка C# — C# 2.0.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.07.04 19:03
Оценка: :)
Здравствуйте, _nn_, Вы писали:

VD>>Почему не занимается? В новой студии будут C++/CLI — очень серьезное расширение С++. Можно сказать С++ с человеческим лицом .


__>Я имел ввиду Unmanaged C++.


Им занимаются копитеты по стандартизации и лично г. Страуструп. Так что скажем им спосибо за наше счастливое детство.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Нововведения в C# 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 21.04.04 17:38
Оценка:
Здравствуйте, Чистяков Владислав (VladD2), Вы писали:

ЧВV>Статья:



ЧВV>Авторы:

ЧВV> Чистяков Владислав (VladD2)

ЧВV>Аннотация:

ЧВV>В статье рассказывается о новшествах которые должны появиться в новой версии языка C# — C# 2.0.

А какие изменения в тестах в 2005 ????
Кстати делегаты в том тесте проигрывают в 3 раз а не в 5 как ты везде утверждаешь.
и солнце б утром не вставало, когда бы не было меня
Re[2]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.04.04 19:02
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>А какие изменения в тестах в 2005 ????


Напишем в одном из ближайших номеров.

S> Кстати делегаты в том тесте проигрывают в 3 раз а не в 5 как ты везде утверждаешь.


В каком в том?
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Нововведения в C# 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 22.04.04 08:30
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Serginio1, Вы писали:


S>>А какие изменения в тестах в 2005 ????


VD>Напишем в одном из ближайших номеров.


S>> Кстати делегаты в том тесте проигрывают в 3 раз а не в 5 как ты везде утверждаешь.


VD>В каком в том?

А сколько в этой статье тестов????
Помоему один с QuikSort с дженерик делегатами, дженерик интерфейсами, чистым сравнением.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[4]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.04.04 18:21
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> А сколько в этой статье тестов????

S> Помоему один с QuikSort с дженерик делегатами, дженерик интерфейсами, чистым сравнением.

А причем тут еще не вышедщие дженерики?
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Нововведения в C# 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.04.04 10:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Serginio1, Вы писали:


S>> А сколько в этой статье тестов????

S>> Помоему один с QuikSort с дженерик делегатами, дженерик интерфейсами, чистым сравнением.

VD>А причем тут еще не вышедщие дженерики?

Там были результаты использования делегатов и интерфейсов в качестве компараторов.
Или их поведение сильно отличается от того дженерики они или нет?????
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[6]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.04.04 13:06
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Там были результаты использования делегатов и интерфейсов в качестве компараторов.

S> Или их поведение сильно отличается от того дженерики они или нет?????

Блин, ты вдумайся в свои слова. Ты говоришь о еще не выщедшей версии и к тому же сравниваешь не простой вызов и делегат, а интерфейс и делегат. Плюс сравниваешь не скорость вызова, а скорость алгоритма использующего этот вызов.

Я же говорил о разнице в скорости самого вызова делегата по сравнению с обычным вызовом. Причем о версии дотнета 1.1.

Разница на алгоритме сорировки получается годе-то около 6 раз. А разница в скорости вызова вообще тяжело вычисляется, но ежу понятно, что значитально больше.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Нововведения в C# 2.0
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.04.04 13:17
Оценка:
Здравствуйте, 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
Автор: Serginio1
Дата: 13.10.03

Сделанные давным давно на 1.1
Я просто про твои 5 — 6 раз.
Но даже в 3 раза это много
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[8]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.04.04 14:32
Оценка:
Здравствуйте, Serginio1, Вы писали:

Плохо ты считаешь.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Нововведения в C# 2.0
От: _nn_ www.nemerleweb.com
Дата: 01.07.04 15:25
Оценка:
Здравствуйте, Чистяков Владислав (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));
  }
}

Собственно сам анонимный метод выделен красным.

http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.07.04 19:17
Оценка:
Здравствуйте, _nn_, Вы писали:

__>[/c#]

__>Собственно сам анонимный метод выделен красным.
__>[/q]

Ошиблись при выкладке. Постараюсь надовить, чобы исправили.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Нововведения в C# 2.0
От: trolik Россия  
Дата: 04.07.04 06:50
Оценка:
Здравствуйте, Чистяков Владислав (VladD2), Вы писали:

ЧВV>Статья:



ЧВV>Авторы:

ЧВV> Чистяков Владислав (VladD2)

ЧВV>Аннотация:

ЧВV>В статье рассказывается о новшествах которые должны появиться в новой версии языка C# — C# 2.0.


В качестве уточнения может использоваться имя класса (при этом параметр типа должен быть унаследован от этого класса), имя интерфейса (который должен реализовать параметр типа) или new().


Так же могут успользоваться ключевые слова struct (value-тип) и class (reference-тип).

У них еще "поведение" default изменилось — наверное надо или текст изменить или сделать пометку в начале о том что некторые моменты со временем изменились и еще могут измениться.
Re[2]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.07.04 20:38
Оценка:
Здравствуйте, trolik, Вы писали:

T>Так же могут успользоваться ключевые слова struct (value-тип) и class (reference-тип).


T>У них еще "поведение" default изменилось — наверное надо или текст изменить или сделать пометку в начале о том что некторые моменты со временем изменились и еще могут измениться.


Этого всего еще небыло в той альфе по которой писалась статья. В продолжении статиь (во втором номере этого года) про все это сказано.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Нововведения в C# 2.0
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 05.07.04 07:10
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Опечатка :

__>Собственно сам анонимный метод выделен красным.

fixed
Re: Нововведения в C# 2.0
От: _nn_ www.nemerleweb.com
Дата: 05.07.04 09:10
Оценка:
Здравствуйте, Чистяков Владислав (VladD2), Вы писали:

Эх, почему Microsoft не занимается обычным С++ ?
Так бы уже и template typedef и typeof были...
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.07.04 22:06
Оценка:
Здравствуйте, _nn_, Вы писали:

___>Эх, почему Microsoft не занимается обычным С++ ?

__>Так бы уже и template typedef и typeof были...

Почему не занимается? В новой студии будут C++/CLI — очень серьезное расширение С++. Можно сказать С++ с человеческим лицом .
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Нововведения в C# 2.0
От: _nn_ www.nemerleweb.com
Дата: 06.07.04 06:32
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _nn_, Вы писали:


___>>Эх, почему Microsoft не занимается обычным С++ ?

__>>Так бы уже и template typedef и typeof были...

VD>Почему не занимается? В новой студии будут C++/CLI — очень серьезное расширение С++. Можно сказать С++ с человеческим лицом .


Я имел ввиду Unmanaged C++.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.07.04 20:47
Оценка:
Небольшое предупреждение

Эта статья была основана на одной из самых первых альфа-версий второго .NET-а. По этому в ней есть некоторые расхождения с текущими бэта-версиями. Так псевдо-поле T.defaulte заменено на встроенную функцию defaulte(T). Кое-какие дополнения можно найти во второй части статьи Нововведения во второй альфа-версии VS 2005 (Whidbey) и .NET Framework.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Нововведения в C# 2.0
От: Andir Россия
Дата: 11.07.04 08:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Эта статья была основана на одной из самых первых альфа-версий второго .NET-а. По этому в ней есть некоторые расхождения с текущими бэта-версиями. Так псевдо-поле T.default заменено на встроенную функцию default(T).


А как оно теперь объявляется? Получить понятно, а как реализовали объявление для своего типа??

С Уважением, ANdir!
<< using(RSDN@Home 1.1.4 beta 2){/* Работаем */} >>
Re[3]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.07.04 13:11
Оценка:
Здравствуйте, Andir, Вы писали:

A>А как оно теперь объявляется? Получить понятно, а как реализовали объявление для своего типа??


Не совсем понял вопрос. В общем, вот пример использования:
class A<T>
{
}

class B<T>
{
    A<T> _a;

    public void Method()
    {
        if (чтоТоТам)
            _a = new A<T>();
        else
            _a = default(A<T>);
    }
}
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Нововведения в C# 2.0
От: Andir Россия
Дата: 13.07.04 01:46
Оценка:
Здравствуйте, 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!
<< using(RSDN@Home 1.1.4 beta 2){/* Работаем */} >>
Re[5]: Нововведения в C# 2.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.07.04 19:16
Оценка:
Здравствуйте, 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 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Нововведения в C# 2.0
От: Andir Россия
Дата: 14.07.04 00:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Будет исключение NullReferenceException в вделенном жирным коде, так как default для ссылочных типов всегда равен null-у. Если А объявить как структуру, то код просто не скомпилируется, так как для структур запрещена инлайн-инициализация и конструктроры без параметров. Поверь все это сделано не случайно. Под этими решениями лежит нехилая логическая база.


Верю, верю ... искал понимание, понимание пришло Немного себе не так представлял механизм default, думал, что это некоего рода маркер для значений дженериков. Обшибся. Исправлюсь

С Уважением, Andir!
<< using(RSDN@Home 1.1.4 beta 2){/* Работаем */} >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.