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

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

чо покодить?
Чегонибудь на C# 3.0
26.8 Expression treesГениально! К сожалению, Маккарти изобрел эту фичу более 50 лет назад
Expression trees permit lambda expressions to be represented as data structures instead of executable code.
Через 20 лет, может быть они и нормальный CLOS приделают...Чувак, я всё понимаю. Они это всё не сами придумали, конечно.
Однако стремительно идущий процесс удобного интегрирования разных таких штук в С-подобный процедурный/ОО язык меня весьма радует.
2Аис - понятия не имею, полазь по сайту, может найдёшь какую-нибудь демку, хотя вряд ли, конечно.
Однако стремительно идущий процесс удобного интегрирования разных таких штук в С-подобный процедурный/ОО язык меня весьма радует.
2Аис - понятия не имею, полазь по сайту, может найдёшь какую-нибудь демку, хотя вряд ли, конечно.
может найдёшь какую-нибудь демку, хотя вряд ли, конечноНу вообще-то есть прекрасный сайт 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-страница
ОМГ, круто, спасибо
Если кто скачает, выложите плз.
Давно как
Кстати внимательное изучение сабжа влияет на моск. Я теперь во втором шарпе пишу что-то вроде
И между прочим это не такое уж и извращение, потому что во-первых изготовление строчки производится непосредственно в месте использования, а во-вторых не захламляется пространство имён.
delegate T EmptyAction<T>
static T Call<T>(EmptyAction<T> action)
{
return action;
}
static Regex matchStartSequence = new Regex(Call<string>(delegate
{
return "asdf";
};
И между прочим это не такое уж и извращение, потому что во-первых изготовление строчки производится непосредственно в месте использования, а во-вторых не захламляется пространство имён.
Ну а по-новому это как?
Понятия не имею =) Я его не настолько внимательно читал
Ну вот. Зашёл в тред почитать про One True Way (new&improved а никто и не в курсе 

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

Согласен, их тут переизбыток. Думается к четвертому шарпу они придумают, как сделать код чище.
> а что эта оперция должна делать?
obj?.FieldExpression должно быть эквивалентно записи
obj != null ? obj.FieldExpression : default(typeof(obj.FieldExpression
такая конструкция постоянно нужна в бизнес-логике при написании "длинных" вызовов
core.Context.ViewManager.GetSelectedItem.Childs.Count
obj?.FieldExpression должно быть эквивалентно записи
obj != null ? obj.FieldExpression : default(typeof(obj.FieldExpression
такая конструкция постоянно нужна в бизнес-логике при написании "длинных" вызовов
core.Context.ViewManager.GetSelectedItem.Childs.Count
да ну... всё это жалкие потуги. C# изначально был испорчен хотя бы своим ужасным синтаксисом.
а ещё больше испорчен идеологически. не очень понятно, зачем они пытаются создать помесь молотка и микроскопа.
впрочем, это вполне в стиле Microsoft.
а ещё больше испорчен идеологически. не очень понятно, зачем они пытаются создать помесь молотка и микроскопа.
впрочем, это вполне в стиле Microsoft.
Не понял. С# изначально создавался как жава-киллер, и эту нишу он вполне занял, заодно прихватив плюсы. Если сравнивать с ними - синтаксис прекрасный просто. И вообще, сишный синтаксис довольно мил, хотя меня уже посещают разные мысли на тему что неплохо было бы позволить объявлять что угодно где угодно, совместив таким образом круглые и фигурные скобки (заодно избавившись от ненужных по примеру Ruby).
Теперь M$ довольно успешно впихивает в тот же синтаксис (с полной обратной совместимостью) удобные функциональные элементы, ленивость (type inference/anonimous classes) и тренируется во впихивании совершенно чуждых вещей вроде SQL syntax, тоже довольно успешно. Подчеркну - всё со стопроцентной обратной совместимостью. И пока удаётся!
Да, получается "помесь молотка и микроскопа", в которой можно и стучать, и, так сказать, подковывать инфузории. Вполне органичная помесь причём. Что, завидно? =)
Подозреваю, что четвёртого шарпа не будет в общепринятом смысле, то есть то, что они выпустят под таким именем, будет больше походить на Форт.
Теперь M$ довольно успешно впихивает в тот же синтаксис (с полной обратной совместимостью) удобные функциональные элементы, ленивость (type inference/anonimous classes) и тренируется во впихивании совершенно чуждых вещей вроде SQL syntax, тоже довольно успешно. Подчеркну - всё со стопроцентной обратной совместимостью. И пока удаётся!
Да, получается "помесь молотка и микроскопа", в которой можно и стучать, и, так сказать, подковывать инфузории. Вполне органичная помесь причём. Что, завидно? =)
Подозреваю, что четвёртого шарпа не будет в общепринятом смысле, то есть то, что они выпустят под таким именем, будет больше походить на Форт.
anonimous classesв Java это было еще до создания C#, почему они не скопировали это еще в первую версию шарпа?
В C# 3.0 анонимные классы это не то, что в Java. Аналогом анонимных классов в стиле Java являются анонимные делегаты, типа как приводил пример . Анонимные классы это возможность сделать так:
Ограничением (по крайней мере пока) использования таких типов является то, что такие типы существуют только внутри метода. Их нельзя передать наружу.
var x = new { Name="", Description="Java Programmer" }; Ограничением (по крайней мере пока) использования таких типов является то, что такие типы существуют только внутри метода. Их нельзя передать наружу.
Аналогом анонимных классов в стиле Java являются анонимные делегатыда, но не совсем. Анонимный класс в Jаva это в общем случае реализация нескольких методов, а делегат это один метод. К тому же анонимный класс можно унаследовать от класса, а объявление делегата это фактически интерфейс с одним методом.
var x = new { Name="", Description="Java Programmer" };
прикольно

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

Оставить комментарий
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. И анонимные типы.
Я прям весь в предвкушении =)