C# 3.0 specifications

bleyman

Все видели, кому интересно?
http://download.microsoft.com/download/5/8/6/5868081c-68aa-4...
Моя любимая цитата оттуда, которая позволяет оценить масштабы:
26.8 Expression trees
Expression trees permit lambda expressions to be represented as data structures instead of executable code.
Ну и sql-ный синтаксис они очень мило впихнули. И type inference. И extension methods. И анонимные типы.
Я прям весь в предвкушении =)

Dasar

эти не хорошие люди не сделали операцию "?.", поэтому все плохо

gopnik1994

а что эта оперция должна делать?

timefim

А есть какая нибудь надстройка над студией, что бы можно было покодить нормально?

agaaaa

ппц

bleyman

чо покодить?

timefim

Чегонибудь на C# 3.0

vook

26.8 Expression trees
Expression trees permit lambda expressions to be represented as data structures instead of executable code.
Гениально! К сожалению, Маккарти изобрел эту фичу более 50 лет назад Через 20 лет, может быть они и нормальный CLOS приделают...

bleyman

Чувак, я всё понимаю. Они это всё не сами придумали, конечно.
Однако стремительно идущий процесс удобного интегрирования разных таких штук в С-подобный процедурный/ОО язык меня весьма радует.
2Аис - понятия не имею, полазь по сайту, может найдёшь какую-нибудь демку, хотя вряд ли, конечно.

Helga87

может найдёшь какую-нибудь демку, хотя вряд ли, конечно
Ну вообще-то есть прекрасный сайт netfx3.com, на котором тут можно скачать:
1. .NET Framework 3.0 Runtime Components RC1
2. Windows SDK for Vista RC1 and the .NET Framework 3.0 RC1
3. Visual Studio 2005 Extensions for Windows Workflow Foundation (WF RC5)
4. Visual Studio "Orcas" CTP - Tools for .NET Framework 3.0 RC1
Для того, чтобы кодить на C# 3.0 достаточно скачать пункты 1 и 4.
upd. Вношу поправку. Для C# 3.0 надо качать другую Orcas c не менее замечательного сайта web-страница

bleyman

ОМГ, круто, спасибо

timefim

Если кто скачает, выложите плз.

Helga87

Давно как

bleyman

Кстати внимательное изучение сабжа влияет на моск. Я теперь во втором шарпе пишу что-то вроде

delegate T EmptyAction<T>

static T Call<T>(EmptyAction<T> action)
{
return action;
}

static Regex matchStartSequence = new Regex(Call<string>(delegate
{
return "asdf";
};

И между прочим это не такое уж и извращение, потому что во-первых изготовление строчки производится непосредственно в месте использования, а во-вторых не захламляется пространство имён.

Marinavo_0507

Ну а по-новому это как?

bleyman

Понятия не имею =) Я его не настолько внимательно читал

Marinavo_0507

Ну вот. Зашёл в тред почитать про One True Way (new&improved а никто и не в курсе

Helga87

Ну так заботай, расскажи.

Marinavo_0507

У меня при виде угловых скобок моск отказывает

Helga87

Согласен, их тут переизбыток. Думается к четвертому шарпу они придумают, как сделать код чище.

Dasar

> а что эта оперция должна делать?
obj?.FieldExpression должно быть эквивалентно записи
obj != null ? obj.FieldExpression : default(typeof(obj.FieldExpression
такая конструкция постоянно нужна в бизнес-логике при написании "длинных" вызовов
core.Context.ViewManager.GetSelectedItem.Childs.Count

psihodog

да ну... всё это жалкие потуги. C# изначально был испорчен хотя бы своим ужасным синтаксисом.
а ещё больше испорчен идеологически. не очень понятно, зачем они пытаются создать помесь молотка и микроскопа.
впрочем, это вполне в стиле Microsoft.

bleyman

Не понял. С# изначально создавался как жава-киллер, и эту нишу он вполне занял, заодно прихватив плюсы. Если сравнивать с ними - синтаксис прекрасный просто. И вообще, сишный синтаксис довольно мил, хотя меня уже посещают разные мысли на тему что неплохо было бы позволить объявлять что угодно где угодно, совместив таким образом круглые и фигурные скобки (заодно избавившись от ненужных по примеру Ruby).
Теперь M$ довольно успешно впихивает в тот же синтаксис (с полной обратной совместимостью) удобные функциональные элементы, ленивость (type inference/anonimous classes) и тренируется во впихивании совершенно чуждых вещей вроде SQL syntax, тоже довольно успешно. Подчеркну - всё со стопроцентной обратной совместимостью. И пока удаётся!
Да, получается "помесь молотка и микроскопа", в которой можно и стучать, и, так сказать, подковывать инфузории. Вполне органичная помесь причём. Что, завидно? =)
Подозреваю, что четвёртого шарпа не будет в общепринятом смысле, то есть то, что они выпустят под таким именем, будет больше походить на Форт.

6yrop

anonimous classes
в Java это было еще до создания C#, почему они не скопировали это еще в первую версию шарпа?

Helga87

В C# 3.0 анонимные классы это не то, что в Java. Аналогом анонимных классов в стиле Java являются анонимные делегаты, типа как приводил пример . Анонимные классы это возможность сделать так:
 
var x = new { Name="", Description="Java Programmer" };  

Ограничением (по крайней мере пока) использования таких типов является то, что такие типы существуют только внутри метода. Их нельзя передать наружу.

6yrop

Аналогом анонимных классов в стиле Java являются анонимные делегаты
да, но не совсем. Анонимный класс в Jаva это в общем случае реализация нескольких методов, а делегат это один метод. К тому же анонимный класс можно унаследовать от класса, а объявление делегата это фактически интерфейс с одним методом.
var x = new { Name="", Description="Java Programmer" };

прикольно

sasha79

Причем, как мне написал в Google Talk, можно даже вот так писать:
var x = new {Name="", Description="Java Programmer"};
var y = new {Name="", Description="Ruby Hacker"};
x = y;

poi1981

пока в С# только обещают, в nemerle уже меряются
Оставить комментарий
Имя или ник:
Комментарий: