Orcas - первые впечатления
Я наконец то понял логику Microsoft! Если продук ожидаем и активно раскручивается, то толку от него будет весьма и весьма немного. А если он тихонечко разрабатывается и не создает особого ажиотажа - жди откровений. По крайней мере пока что именно так все и происходит. Например мои ожидания и надежды на .NET 2 были весьма и весьма напрасны - хоть и много хорошего появилось в новой версии .NET Framework, но куда-то не туда это новое пошло и как-то хорошее впечатление о себе смазало. А вот с Visual Studio Orcas (вернее с C# 3) получается совсем по другому - всео лишь второй день щупаю по серьезному сей продукт, а уже приходи нежелание работать в 2005-й студии над старыми проектами :). Хотя вроде мелочь добавили - 4 небольших изменения языка - а влияние на дальнейшую жизнь .NET девелоперов они окажут значительное.
Я не собираюсь в своей маленькой заметке пытаться рассказать о нововведениях в С# 3, я хочу показать только лишь парочку примеров кода, которые меня лично приятно удивили. Например вот такой:
var cmp = new[] {
new { Revenue = 100, Name = "GOOG", Country = "USA"},
new { Revenue = 200, Name = "IKEA", Country = "Sweden"},
new { Revenue = 300, Name = "AIR", Country = "France"},
new { Revenue = 5000, Name = "MSFT", Country = "USA"}
};
foreach (var r in from c in cmp
where c.Revenue > 250
select new { c.Name, c.Country })
Console.WriteLine("{0}\t{1}", r.Name, r.Country);
Console.ReadLine();
Или вот такой:
DB target = new DB();
SectionGroup sg = new SectionGroup()
{
Name = "Test1",
Description = "Test section group 1"
};
Section s = new Section()
{
Name = "Test 1-1",
Description = "Test section 1-1",
SectionGroup = sg,
DateCreated = DateTime.Now
};
target.SectionGroups.Add(sg);
target.SubmitChanges();
В первом примере создается коллекция анонимных объектов и пото запросом выводятся названия и страны тех объектов, у которых Revenue > 250, во втором же - создаются 2 записи в 2-х таблицах базы данных. И все это мало того, что делается стандартными средствами .NET Framework 3.5 и C# 3, так еще и замечательно поддерживается интеллисенсом в Visual Studio Orcas! Правда для работы 2-го примера нужно сделать еще класс DB, но вся работа по его созданию - это добавить новый айтем с типом Linq to SQL File в и перетащить на дизайнер этого айтема нужные таблицы из Server Explorer. А потом работать только со сгенеренными классами и не думать о том, как данные из этих классов попадают в базу при сохранении и каким образом из базы данные загружаются в соотв. классы при загрузке. Просто для того, чтобы вывести все названия секций из группы 5 пишем:
var names = from s in db.Sections
where s.GroupID == 5
select s.Name;
foreach(var name in names)
Console.WriteLine(name);
Вообщем революция грядет