[Ann, C#6] Состояние для VS2015 preview
От: Sinix  
Дата: 21.11.14 07:39
Оценка: 22 (3)
В официальном блоге появилось описание текущего положения дел с C#6.

В принципе, ничего нового, но даёт представление о фичах, которые скорее всего попадут в релиз (Primary Constructors и Declaration Expressions, например, уже не прошли
Автор: SergeyT.
Дата: 02.10.14
).

UPD. Кстати, вот про это я что-то раньше в оф.блогах не читал:

Expression-bodied function members allow methods, properties and other kinds of function members to have bodies that are expressions instead of statement blocks, just like with lambda expressions.

Methods as well as user-defined operators and conversions can be given an expression body by use of the “lambda arrow”:

public Point Move(int dx, int dy) => new Point(x + dx, y + dy); 
public static Complex operator +(Complex a, Complex b) => a.Add(b); 
public static implicit operator string(Person p) => "\{p.First} \{p.Last}";


The effect is exactly the same as if the methods had had a block body with a single return statement.

For void returning methods – and Task returning async methods – the arrow syntax still applies, but the expression following the arrow must be a statement expression (just as is the rule for lambdas):

public void Print() => Console.WriteLine(First + " " + Last);


Properties and indexers can have getters and settersgetter-only properties and indexers can have an expression body:

public string Name => First + " " + Last; 
public Customer this[long id] => store.LookupCustomer(id);


Добавили всё-таки.
Отредактировано 21.11.2014 7:48 Sinix . Предыдущая версия .
Re: Дата релиза MSVS 2015
От: Qbit86 Кипр
Дата: 21.11.14 10:19
Оценка: -1
Здравствуйте, Sinix, Вы писали:

S>В официальном блоге появилось описание текущего положения дел с C#6.


А когда планируется релиз MSVS 2015? Будет ли для него Community Edition?
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Дата релиза MSVS 2015
От: Sinix  
Дата: 21.11.14 10:38
Оценка: 4 (1)
Здравствуйте, Qbit86, Вы писали:

S>>В официальном блоге появилось описание текущего положения дел с C#6.

Q>А когда планируется релиз MSVS 2015? Будет ли для него Community Edition?
Официальной даты нет, "later in the year" in 2015. Скорее всего выйдет вместе с win10. И судя по состоянию проектов, которые планируется включить в студию — это будет осенью.

Community Edition будет с вероятностью 0.99, иначе я вообще не улавливаю логики в открытии vs2013. Закроют — будет НЕНАВИСТЬ, как с vs 2012 express for desktop
Re: [Ann, C#6] Состояние для VS2015 preview
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.11.14 13:08
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>UPD. Кстати, вот про это я что-то раньше в оф.блогах не читал:


Да ладно, это было даже в первой публичной демонстрации C# 6 на билде. Просто реализация почему то сильно подзадержалась.

S>Добавили всё-таки.


Так вроде и не отказывались добавлять. Фича абсолютно не вызывает споров. Просто, полезно и очевидно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: Дата релиза MSVS 2015
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.11.14 13:09
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>А когда планируется релиз MSVS 2015?


Очевидно, в следующем году. ИМХО где то в районе релиза Win10.

Q> Будет ли для него Community Edition?


Да.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: [Ann, C#6] Состояние для VS2015 preview
От: Sinix  
Дата: 21.11.14 13:27
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>>UPD. Кстати, вот про это я что-то раньше в оф.блогах не читал:

AVK>Да ладно, это было даже в первой публичной демонстрации C# 6 на билде. Просто реализация почему то сильно подзадержалась.
Угу. Я про то, что раньше официальных подтверждений для методов и индексаторов не было. Только для простых свойств.

Ну, или я их не заметил
Re[3]: [Ann, C#6] Состояние для VS2015 preview
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.11.14 16:56
Оценка: 30 (1)
Здравствуйте, Sinix, Вы писали:

AVK>>Да ладно, это было даже в первой публичной демонстрации C# 6 на билде. Просто реализация почему то сильно подзадержалась.

S>Угу. Я про то, что раньше официальных подтверждений для методов и индексаторов не было. Только для простых свойств.

Ты чего то путаешь. Для методов было заявлено с самого начала.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re: [Ann, C#6] Состояние для VS2015 preview
От: btn1  
Дата: 22.11.14 11:22
Оценка: -3 :)
Здравствуйте, Sinix, Вы писали:

S>В официальном блоге появилось описание текущего положения дел с C#6.


В целом неплохо, не вставляет только бесполезняк типа "exceptions filter" (у кого-то есть реально полезный пример использования, который сильно сокращает код по сравнению со старым вариантом?).
И static import — могли бы не изгаляться яйцеголовые, а тупо реализовать в стиле pascal:

with(obj1, obj2){
    .member1 = .member2 * 10;
}


Это НАМНОГО нагляднее, чем вот эта помойка, которую они сделают из функций и названий классов. Почему проектировщики такие индусы?? Неужто НИЧЕГО не кликает в башке, когда явно совесть подзуживает?
Отредактировано 22.11.2014 11:23 btn1 . Предыдущая версия .
Re[2]: [Ann, C#6] Состояние для VS2015 preview
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.14 18:38
Оценка:
Здравствуйте, btn1, Вы писали:

B>не вставляет только бесполезняк типа "exceptions filter" (у кого-то есть реально полезный пример использования, который сильно сокращает код по сравнению со старым вариантом?).


Посмотрел код на немерле, где фильтры были с самого начала. Используется эта возможность (как и паттерн-матчинг в catch-ах) крайне редко. Так что ты прав. Хотя сама возможность удобна. Так что лишней не будет.

B>И static import — могли бы не изгаляться яйцеголовые, а тупо реализовать в стиле pascal:

B>
B>with(obj1, obj2){
B>    .member1 = .member2 * 10;
B>}
B>


B>Это НАМНОГО нагляднее,


Это из другой оперы. Доступа к другим модулям это не даст — это даст доступ к членам некоторого объекта.

Собственно, фича не плоха, но и импорт типов тоже штука полезная.

Собственно можно было бы реализовать и то, и другое. Или обобщить using до проекции областей видимости. Тогда можно было бы делать так:
using System.Coinsole;
class Prog
{
  static void Main()
  {
    var obj1 = new Obj1();
    using obj1;

    WriteLine(member1);
  }
}


B> чем вот эта помойка, которую они сделают из функций и названий классов. Почему проектировщики такие индусы?? Неужто НИЧЕГО не кликает в башке, когда явно совесть подзуживает?


Никакой помойки не наблюдаю. В Немерел импорт типов есть изначально. Фича удобная проблем не создает. Единственное что... в Немерле вывод типов по сильнее, а значит реже возникают неоднозначности.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: [Ann, C#6] Состояние для VS2015 preview
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 23.11.14 05:27
Оценка: +1
Здравствуйте, btn1, Вы писали:

B>В целом неплохо, не вставляет только бесполезняк типа "exceptions filter" (у кого-то есть реально полезный пример использования, который сильно сокращает код по сравнению со старым вариантом?).


exception filter не код сокращает, а реализует некоторый сценарий, который раньше на C# был нереализуем в принципе и приходилось либо кусочки на VB писать, либо постпроцессинг IL прикручивать.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re: [Ann, C#6] Состояние для VS2015 preview
От: HrorH  
Дата: 24.11.14 08:08
Оценка: +1
Здравствуйте, Sinix, Вы писали:


S>В официальном блоге появилось описание текущего положения дел с C#6.


S>В принципе, ничего нового, но даёт представление о фичах, которые скорее всего попадут в релиз (Primary Constructors и Declaration Expressions, например, уже не прошли
Автор: SergeyT.
Дата: 02.10.14
).


Для меня было новым using static для нестатических классов и enum.
А также string interpolation c синтаксисом $"{x} {y} {z}", без обратного слеша намного лучше. $@ вообще жесть, я не въехал.
И ответы на вопросы в комментариях очень интересные.
Re: [Ann, C#6] Состояние для VS2015 preview
От: DarthSidius  
Дата: 24.11.14 08:49
Оценка: -1
Здравствуйте, Sinix, Вы писали:

S>Methods as well as user-defined operators and conversions can be given an expression body by use of the “lambda arrow”:

S>
S>public Point Move(int dx, int dy) => new Point(x + dx, y + dy); 
S>public static Complex operator +(Complex a, Complex b) => a.Add(b); 
S>public static implicit operator string(Person p) => "\{p.First} \{p.Last}";
S>


И в чем кайф... эээ... сакральный смысл?
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 58>>
♠♠♥♠♠♦♥
Re[2]: [Ann, C#6] Состояние для VS2015 preview
От: Sinix  
Дата: 24.11.14 09:39
Оценка:
Здравствуйте, HrorH, Вы писали:

HH>Для меня было новым using static для нестатических классов и enum.

Да, синтаксис они поменяли, но в этом релизе вроде старый.

Note: The Preview will only import members of static classes. We have since changed the design in several ways:
1. The syntax will be more different from current using clauses – it will have the keywords “using static”.
2. Members of non-static types can be imported, including structs and enums
3. Members of VB modules and F# top level functions can be imported
4. Extension methods will not be imported into top-level scope; instead they will show up as extension methods. This gives a way to import extension methods from just a single class, something which wasn’t possible before.

Кстати, п.4 вроде с самого начала был, вот тут в "Static Using Statements" упоминался.

HH>А также string interpolation c синтаксисом $"{x} {y} {z}", без обратного слеша намного лучше. $@ вообще жесть, я не въехал.

HH>И ответы на вопросы в комментариях очень интересные.
Угу. И вопросы тоже. Я там с verbose verbatim strings тоже отметился. Позорище блин
Re[2]: [Ann, C#6] Состояние для VS2015 preview
От: Sinix  
Дата: 24.11.14 09:49
Оценка:
Здравствуйте, DarthSidius, Вы писали:

public Point Move(int dx, int dy) => new Point(x + dx, y + dy); 
public static Complex operator +(Complex a, Complex b) => a.Add(b); 
public static implicit operator string(Person p) => "\{p.First} \{p.Last}"; // в следующем релизе будет $"{p.First} {p.Last}"


DS>И в чем кайф... эээ... сакральный смысл?

We do what we must because we can?
Если честно, про половину фич (кроме null-conditional operators разве что) можно то же самое спросить.
Особенно про parameterless .ctor() в структурах. Добровольно подкладывать в язык такие грабли? Верните Хейлсберга, пожалуйста
Re[3]: [Ann, C#6] Состояние для VS2015 preview
От: AlexRK  
Дата: 24.11.14 11:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>exception filter не код сокращает, а реализует некоторый сценарий, который раньше на C# был нереализуем в принципе и приходилось либо кусочки на VB писать, либо постпроцессинг IL прикручивать.


try
{
    try
    {
        Run();
    }
    catch (Exception1 err1)
    {
        ...
    }
}
catch (Exception2 err2)
{
    ...
}


Не?
Re[4]: [Ann, C#6] Состояние для VS2015 preview
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 24.11.14 11:46
Оценка: 14 (1)
Здравствуйте, AlexRK, Вы писали:

ARK>Не?


Не. Ключевой момент — что будет в текущем стектрейсе. Exception filter, в чем его особенность, стектрейс не меняет, в отличие от рукопашного кода. Это позволяет реализовывать определенные сценарии диагностики.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: [Ann, C#6] Состояние для VS2015 preview
От: AlexRK  
Дата: 24.11.14 12:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Не. Ключевой момент — что будет в текущем стектрейсе. Exception filter, в чем его особенность, стектрейс не меняет, в отличие от рукопашного кода. Это позволяет реализовывать определенные сценарии диагностики.


Не меняет вообще, даже если исключение продолжает свой путь дальше?
Re[5]: [Ann, C#6] Состояние для VS2015 preview
От: Sinix  
Дата: 24.11.14 12:27
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Не. Ключевой момент — что будет в текущем стектрейсе. Exception filter, в чем его особенность, стектрейс не меняет, в отличие от рукопашного кода. Это позволяет реализовывать определенные сценарии диагностики.


Не для спора

А какие преимущества есть перед стандартным throw именно для диагностики?
Сложный код типа логирования в exception filter один фиг не запихнёшь. Если ничего не путаю, исключения в фильтрах проглатываются, а не заменяют собой обрабатываемое исключение.

Я пока могу назвать только одно: нет косяков с line number типа этого. При желании лечится извращениями вида PreserveStackTrace() / "var x = ExceptionDispatchInfo.Capture(ex); ... x.Throw();", но извращения — они и есть извращения.

Ещё что-то?
Re[6]: [Ann, C#6] Состояние для VS2015 preview
От: vorona  
Дата: 24.11.14 12:58
Оценка: 15 (1) +1
Здравствуйте, Sinix, Вы писали:

S>Ещё что-то?


http://blogs.msdn.com/b/rmbyers/archive/2008/12/22/getting-good-dumps-when-an-exception-is-thrown.aspx
Re[7]: [Ann, C#6] Состояние для VS2015 preview
От: Sinix  
Дата: 24.11.14 13:28
Оценка: +1
Здравствуйте, vorona, Вы писали:

V>http://blogs.msdn.com/b/rmbyers/archive/2008/12/22/getting-good-dumps-when-an-exception-is-thrown.aspx


Так это ж решается через debugdiag и/или etw?

Главная проблема с fail fast в exceptions filter — метод не работает для await/извратов с sync context.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.