Visual Studio 2010 beta

Начиная со среды, 20 мая, все желающие могут ознакомиться с бета-версией новейшей среды разработки Visual Studio 2010 и .NET Framrwork 4.0. Вся информация о способах загрузки находится на этой странице.
Развернутое описание об изменениях в целом, а не только в csharp, можно найти тут, а не тот голимый отчет, что был выложен кем-то на хабре ради кармы.
Меня больше всего заинтересовало пока расширение UML возможностей для рисования схем и логик (всегда мечтал рисовать, а не кодить), а также новый модификатор переменных dynamic. Он нужен при работе с объектами, которые подгружаются как DLR (Dynamic Language Runtime). Например, если Вы подгрузили библиотеку и хотите вызвать какую-то ее функцию или работаете с OfficeAPI, то теперь ваш код будет гораздо короче. Вот пример кода вызывающего функцию объекта неизвестного типа, как это было еще в c#2.0:
Copy Source | Copy HTML
  1. public static void MyMethod<T>(T item)
  2. {
  3.     var getMethod = typeof(T).GetMethod("MyMethod");
  4.     if (getMethod == null)
  5.         throw new InvalidOperationException();
  6.     getMethod.Invoke(item, new object[0]);
  7. }
Теперь же с новым модификатором dynamic можно просто писать:
Copy Source | Copy HTML
  1. public static void MyMethod<T>(T item)
  2. {
  3.     dynamic di = item;
  4.     di.MyMethod();
  5. }
В первоисточнике также говориться, что если посмотреть рефлекшен, то в нем MSVS2010 запишет следующий код, который достаточно похож на старый вариант:
Copy Source | Copy HTML
  1. public static void MyMethod<T>(T item)
  2. {
  3.     object di = item;
  4.     if (<MyMethod>o__SiteContainer0<T>.<>p__Site1 == null)
  5.     {
  6.         <MyMethod>o__SiteContainer0<T>.<>p__Site1 = CallSite<Action<CallSite, object>>.Create(new CSharpCallPayload(RuntimeBinder.GetInstance(), false, false, "MyMethod", typeof(object), null));
  7.     }
  8.     <MyMethod>o__SiteContainer0<T>.<>p__Site1.Target<MyMethod>o__SiteContainer0<T>.<>p__Site1, di);
  9. }

Тэги: news


Добавить комментарий




biuquote
Loading



Кто я?

Программист. Я слежу за блогосферой и знаю, как будет развиваться интернет. Когда у меня есть время я даже прилагаю для этого усилия. Подробнее

Последние комментарии

  • Seaswarm against Mexican oil (3)
    V.exeR написал(а): Так вот откуда потом появятся водные роботы, как в� [Ещё]
  • Seaswarm against Mexican oil (3)
    Flashr написал(а): Видимо бактерии оказались не настолько хороши. Их � [Ещё]
  • Seaswarm against Mexican oil (3)
    aingerlj написал(а): Там же всё бактерии захавают, бложики так говорят. [Ещё]
  • Dubai - LiRu (3)
    Flashr написал(а): Официальное лицо уже подтвердило, что часть страни� [Ещё]
  • Dubai - LiRu (3)
    Егор написал(а): И кстати не только в Дубае, в Шарджи тоже... Подоз� [Ещё]
  • Dubai - LiRu (3)
    Егор написал(а): В марте такая же фигня показывалась и на вконтакте [Ещё]
  • deep-water.ru (20)
    Прохожий написал(а): Я не особо понял в чем там обвиняют, но сделал бы � [Ещё]
  • deep-water.ru (20)
    flashr написал(а): Проблем с хостингом теперь нет. Переехали уже. [Ещё]
  • deep-water.ru (20)
    Sivka написал(а): Если стоит проблема с хостингом, то отпиши в почту� [Ещё]
  • deep-water.ru (20)
    Flashr написал(а): Отмечу, что на странице детальной статистики - htt� [Ещё]
Topbot at FeedsBurner

Копирайт

Все мысли, высказанные в блоге, являются моим мнением и за это мнение меня никто не забанит! Кроме того, никто не имеет право копировать материалы блога без использования ctrl+C/V!

© Copyright 2008