What's New In C# 6.0
От: Sharov Россия  
Дата: 13.11.14 20:54
Оценка: 17 (4) +1
http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/116
Кодом людям нужно помогать!
Re: What's New In C# 6.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.11.14 02:16
Оценка:
Здравствуйте, Sharov, Вы писали:

S>http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/116


Где-то я все уже это видел... Где?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: What's New In C# 6.0
От: Анон  
Дата: 16.11.14 18:00
Оценка:
Здравствуйте, Sharov, Вы писали:

S>http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/116


Никто не знает, они не собираются в будущем добавить такую вещь:

void Foo(int a, params int[] b, int c)
{
}

void Bar(params string[] s, int a)
{
}


Т.е. чтобы неопределенное количество параметров можно было сделать в середине или в начале сигнатуры. Мне как-то раз такого не хватало, приходилось делать порядок аргуметов не совсем таким каким хотелось.
Анон печатает вам сообщение...
Re: What's New In C# 6.0
От: BrainSlug Израиль  
Дата: 16.11.14 18:47
Оценка:
S>http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/116
интересно, добавят ли когда-нибудь хотя бы урезанный pattern matching. и тогда исключения можно было бы матчить. и странно что index initializers только сейчас добавили. не то чтобы мне это нужно было, но просто пару раз я пытался так делать, — мне казалось должно по логике вещей такое работать, а оно не работало
.
Re[2]: What's New In C# 6.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.11.14 07:30
Оценка: +2
Здравствуйте, Анон, Вы писали:

А>Т.е. чтобы неопределенное количество параметров можно было сделать в середине или в начале сигнатуры.


Это, очевидно, сделать в общем случае невозможно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: What's New In C# 6.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.11.14 07:30
Оценка:
Здравствуйте, BrainSlug, Вы писали:

BS>интересно, добавят ли когда-нибудь хотя бы урезанный pattern matching


Да. А почему урезанный?

BS>и тогда исключения можно было бы матчить


С исключениями не все так просто.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: What's New In C# 6.0
От: Sinix  
Дата: 17.11.14 07:47
Оценка:
Здравствуйте, Анон, Вы писали:

А>Т.е. чтобы неопределенное количество параметров можно было сделать в середине или в начале сигнатуры. Мне как-то раз такого не хватало, приходилось делать порядок аргуметов не совсем таким каким хотелось.

Нет, это здорово усложнит вывод перегрузок.

Нюансов и без того хватает.

Самые простые примеры, даже без лямбд/неявных приведений:
void Foo(int a, params int[] b, int c)
{
}
void Foo(params int[] b)
{
}

void Foo<T1,T2>(params T1[] a, params T2[] b)
{
}

Foo(1,2,3); //?
Re[2]: What's New In C# 6.0
От: Sinix  
Дата: 17.11.14 08:13
Оценка: 2 (1)
Здравствуйте, BrainSlug, Вы писали:

S>>http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/116

BS>интересно, добавят ли когда-нибудь хотя бы урезанный pattern matching. и тогда исключения можно было бы матчить.

Просто фильтры на исключения добавили. PM с исключениями не будет с вероятностью .999. Самый простой аргумент: обработка исключений в пару тысяч раз медленнее вызова простого метода (в десятки тысяч — для длинных стеков). И без ломающих изменений это к сожалению не поправить.

Чуть посложнее: логика на исключкениях противоречит FDG.

BS>и странно что index initializers только сейчас добавили. не то чтобы мне это нужно было, но просто пару раз я пытался так делать, — мне казалось должно по логике вещей такое работать, а оно не работало

Как всегда: никто не задокументировал, не закодил, не проверил, не выпустил в продакшн. Вот "Extension Add in collection initializers" куда интереснее, но тож не особо нужен.
Re[3]: What's New In C# 6.0
От: Анон  
Дата: 17.11.14 09:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

А>>Т.е. чтобы неопределенное количество параметров можно было сделать в середине или в начале сигнатуры.

AVK>Это, очевидно, сделать в общем случае невозможно.

Подразумевалось, что только один параметр в сигнатуре может иметь модификатор params.
Анон печатает вам сообщение...
Re[4]: What's New In C# 6.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.11.14 09:46
Оценка:
Здравствуйте, Анон, Вы писали:

AVK>>Это, очевидно, сделать в общем случае невозможно.

А>Подразумевалось, что только один параметр в сигнатуре может иметь модификатор params.

Даже один модификатор params, если он не на последнем месте, легко приводит к неоднозначностям.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: What's New In C# 6.0
От: Анон  
Дата: 17.11.14 11:13
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Даже один модификатор params, если он не на последнем месте, легко приводит к неоднозначностям.


А можно пример?
Неоднозначности при выборе нужного перегруженного метода возможны. Но их, как мне кажется, будет не больше, чем в ситуации, если params на последнем месте.
Анон печатает вам сообщение...
Re[3]: What's New In C# 6.0
От: BrainSlug Израиль  
Дата: 17.11.14 16:58
Оценка:
AVK>Да. А почему урезанный?
ну я в том смысле. что хоть какой. просто если до сих пор нет, значит есть некоторые сложности.
AVK>С исключениями не все так просто.
а почему?
.
Re[4]: What's New In C# 6.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.11.14 07:33
Оценка: 46 (2)
Здравствуйте, BrainSlug, Вы писали:

AVK>>Да. А почему урезанный?

BS>ну я в том смысле. что хоть какой. просто если до сих пор нет, значит есть некоторые сложности.

Сложности все уже решены, PM и что то на тему maybe монады будут основным фокусом следующего релиза.

AVK>>С исключениями не все так просто.

BS>а почему?

Потому что exception filter это фича CLR.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: What's New In C# 6.0
От: Jack128  
Дата: 18.11.14 18:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>что то на тему maybe монады будут основным фокусом следующего релиза.


В C# 6.0 же оператор ?. будет, что еще надо то??
А про not-null-reference types что нить слышно??
Re[6]: What's New In C# 6.0
От: agat50  
Дата: 18.11.14 19:14
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Здравствуйте, AndrewVK, Вы писали:


AVK>>что то на тему maybe монады будут основным фокусом следующего релиза.


J>В C# 6.0 же оператор ?. будет, что еще надо то??

J>А про not-null-reference types что нить слышно??

nameof мб врубят. Для меня самое полезное — await в catch\finally, особенно в finally ибо не обойти нормально было.

P.S. PM в том виде что выложили имхо ещё то извращение. https://roslyn.codeplex.com/discussions/552375 тут в последнем сообщении накатал что думаю об этом в частности. Вкратце — вместо ПМа было бы очень найс видеть возможность управления областями видимости.

А в целом и так всё неплохо, в крайнем случае есть немерл
Re[7]: What's New In C# 6.0
От: IT Россия linq2db.com
Дата: 18.11.14 20:00
Оценка:
Здравствуйте, agat50, Вы писали:

A>Вкратце — вместо ПМа было бы очень найс видеть...


Не-не-не, прочь руки от ПМ!
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: What's New In C# 6.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.14 08:52
Оценка:
Здравствуйте, Jack128, Вы писали:

AVK>>что то на тему maybe монады будут основным фокусом следующего релиза.

J>В C# 6.0 же оператор ?. будет, что еще надо то??

Какая связь?

J>А про not-null-reference types что нить слышно??


А maybe, по твоему, для чего?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[7]: What's New In C# 6.0
От: Jack128  
Дата: 19.11.14 09:32
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Jack128, Вы писали:


AVK>>>что то на тему maybe монады будут основным фокусом следующего релиза.

J>>В C# 6.0 же оператор ?. будет, что еще надо то??

AVK>Какая связь?


ну как, по моему ?. это и есть спец. сахар для ссылчоных/нуллабл типов, которые по сути и есть maybe (не строго монада, но для шарпа сойдет)

в C#5 уже есть обобщенный сахар для монад и мы могли бы написать так: (реализовав соответствующие экстеншен методы)


        {
            var o = new object();
            var ty =
                from x in o
                from t in x.GetType()
                select x;
            Assert.IsNotNull(ty);

            o = null;
            ty =
                from x in o
                from t in x.GetType()
                select x;
            Assert.IsNull(ty);
        }


но это ж некузяво, потому в C#6 мы можем писать так: ty = o?.GetType();

J>>А про not-null-reference types что нить слышно??


AVK>А maybe, по твоему, для чего?


хз. Maybe могут принимать либо спец. значение None(null) либо реальное значение. А хочется иметь тип, который бы запрещал передачу этого специального null'а
Re[8]: What's New In C# 6.0
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.14 22:51
Оценка:
Здравствуйте, Jack128, Вы писали:

J>ну как, по моему ?. это и есть спец. сахар для ссылчоных/нуллабл типов, которые по сути и есть maybe (не строго монада, но для шарпа сойдет)


Элвис-оператор, разумеется, это сахар для nullable типов, то это никоим образом не maybe. Maybe, в отличие от этого оператора, принуждает правильно обрабатывать null.

AVK>>А maybe, по твоему, для чего?

J>хз.

Это вот как раз один из вариантов реализации not-nullable types.

J>А хочется иметь тип, который бы запрещал передачу этого специального null'а


Это тоже в основных планах. А так же аналогичная механика для immutable типов.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[6]: What's New In C# 6.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.11.14 14:36
Оценка:
Здравствуйте, Jack128, Вы писали:

J>А про not-null-reference types что нить слышно??


Его в CLR нужно запихивать, а это серьезная переделка всего CLR. Так что вряд ли это вообще случится.

В каком-то виде поддержка этого дела есть в Решарпере. Так что можно не ждать у моря погоды, а пользоваться ею.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.