C# 8 - фича №1
От: Shmj Ниоткуда  
Дата: 03.12.19 07:48
Оценка:
Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8

?
Re: C# 8 - фича №1
От: samius Япония http://sams-tricks.blogspot.com
Дата: 03.12.19 07:57
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8


PM
Re: C# 8 - фича №1
От: Ночной Смотрящий Россия  
Дата: 03.12.19 08:09
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8

S>?

switch expression, на втором месте ??=.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Using declarations, Null-coalescing assignment
От: Qbit86 Кипр
Дата: 03.12.19 08:10
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8


Using declarations, Null-coalescing assignment — но это скорее полезное, чем важное.
А то, что в списке важное, на мой взгляд, не так уж полезно.
Глаза у меня добрые, но рубашка — смирительная!
Re: C# 8 - фича №1
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.12.19 08:25
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8


S>?


Конечно ПМ, о чем так много говорили со времен немерля! И вот он почти в полной красе. Очень удобно.
Ну и Using declarations тоже для повседневности удобно.
Ну и Disposable ref structs и stackalloc тоже интересен особенно в будущем для объектов

https://xoofx.com/blog/2015/10/08/stackalloc-for-class-with-roslyn-and-coreclr/
и солнце б утром не вставало, когда бы не было меня
Re: C# 8 - фича №1
От: Kolesiki  
Дата: 03.12.19 10:14
Оценка: -6
Readonly members — можно сделать автоматом — человек тут не нужен.
Default interface methods — полное нарушение идеи контрактов, но если это полезно — почему бы и нет?
Pattern Matching — чахотошный, жалкое подобие оных из Nemerle.
Using declarations — давно пора, проснулись, эстонцы! Неужели кому-то было удобно писать тонны вложенных using'ов??
Static local functions — полезно, но чисто как помощь, чтобы не натупить внутри функции. В теории можно обойтись БЕЗ ключ.слова — чисто средствами среды.
Disposable ref structs — никогда не имел дела. Выглядит как костыль к некогда красивой схеме "язык C#".
Nullable reference types — полный идиотизм, костыль для макак, которые неспособны следить за собственным кодом.
Asynchronous streams — хайпофича. На деле асинхронных вещей в жизни не так много, чтобы СТОЛЬКО уделять им внимания.
Indices and ranges — слишком поздно и слишком криво. В языке D они были изначально и ВСЯ системная библиотека построена на них — потому и удобно писать программы, что ranges — не только в твоей либе, а вообще везде. А прикручивать их через 15 лет к устоявшейся .NET — глупо.
Null-coalescing assignment — после &= или += это как бы очевидная вещь, которая должна делаться _по_умолчанию_.
Unmanaged constructed types — игрища с unmanaged миром. Не интересно ни разу, должно отмереть как костыль.
Unmanaged constructed types — вообще не понял о чём. Кому-то хочется поиграть в стек?
Enhancement of interpolated verbatim strings — исправление собственных костылей

Итого, MS потратила сотни человекочасов на.... я даже не знаю, как это фуфло назвать. А ведь там всякие Всхлипперты сидят, надувают щёки и ходят за зарплатой. ЗА ЧТО??
Re: C# 8 - фича №1
От: Kolesiki  
Дата: 03.12.19 10:19
Оценка: -1
> You can retrieve the last word with the ^1 index:

За подобные вещи я б увольнял в тот же день — за этот идиотизм их проклянут навеки. Хотя... кого я хаю — банду индусни!
Re: C# 8 - фича №1
От: Mr.Delphist  
Дата: 03.12.19 10:43
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8


S>?


Всё важно. Язык постепенно вбирает в себя лучшие практики из того же C++ (const-методы), Swift (паттерн-матчинг и деконструкция), D (ranges) и т.п.

One language to rule them all... Да-а-а, моя прелессссть...
Re: C# 8 - фича №1
От: AlexRK  
Дата: 03.12.19 10:57
Оценка: +2 :)
Здравствуйте, Shmj, Вы писали:

S>Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8


S>?


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

В общем, повторяется история С++.

По теме — хрен знает, лично для себя из всего этого хлама самым полезным я бы назвал или новый using, или nullable ссылки.
Re[2]: C# 8 - фича №1
От: alexzzzz  
Дата: 03.12.19 11:06
Оценка: 1 (1) +1
Здравствуйте, Kolesiki, Вы писали:

>> You can retrieve the last word with the ^1 index:

K>За подобные вещи я б увольнял в тот же день — за этот идиотизм их проклянут навеки. Хотя... кого я хаю — банду индусни!

Выбрали самый естественный вариант. Это как дополнительный код для представления целых отрицательных чисел. Вроде можно было и попроще как-то, а на практике проще и удобнее именно так.

K>Readonly members — можно сделать автоматом — человек тут не нужен.


Нельзя автоматом — теряется половина смысла. Задача не только избавиться от защитного копирования структуры, но и чтобы программист случайным движением пальцев сам не заметив не вернул его обратно. Если ты написал readonly, а по факту метод куда-то что-то начал писать, то компилятор будет бить по рукам и ты сам осознанно решай, таки должен метод быть readonly или нет.
Отредактировано 03.12.2019 11:16 alexzzzz . Предыдущая версия . Еще …
Отредактировано 03.12.2019 11:06 alexzzzz . Предыдущая версия .
Re[2]: C# 8 - фича №1
От: Ночной Смотрящий Россия  
Дата: 03.12.19 11:56
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Swift (паттерн-матчинг и деконструкция)


При чем тут Свифт? Это все обсуждалось когда еще никакого свифта даже в проекте не было. Самим же идеям уже несколько десятилетий.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: C# 8 - фича №1
От: alexzzzz  
Дата: 03.12.19 12:19
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8


Важное и полезное — вещи субъективные. Объективно самое большое изменение — Nullable reference types, в силу масштабов проделанной работы и возможных последствий для экосистемы в целом.

Чем точно буду пользоваться:
— Using declarations — код опрятнее
— Static local functions — сначала не понимал смысла локальных функций, потом проникся; по сути большинство моих локальных функций — static
— Null-coalescing assignment — периодически хотелось, а теперь сможется
— Switch expressions — наверно треть моих switch — выражения
— Unmanaged constructed types — один раз точно очень хотелось, но не было возможности

Вероятно пригодятся:
— Stackalloc in nested expressions — сам stackalloc периодически использую
— Readonly members — знаю где применить, но пока неясно, насколько будет видна польза
— Enhancement of interpolated verbatim strings — убрали лишнюю путаницу

Хочется попробовать и посмотреть, что получится:
— Nullable reference types

Вещи утилитарные, не для широкого круга:
— Disposable ref structs
— Default interface methods — хотя объявлять static void Main() внутри интерфейса прикольно, класс для Main ничем не лучше

Скорее всего, пройдёт мимо меня, но может зацепить:
— Pattern matching enhancements: ... — из всего предыдущего пока зацепило только is type pattern expression.

Скорее всего, пройдёт мимо:
— Asynchronous streams

--
Из всех новых фич мне непонятна только одна: Indices and ranges. А именно, какую проблему пытались решить?
Отредактировано 03.12.2019 12:22 alexzzzz . Предыдущая версия .
Re[3]: C# 8 - фича №1
От: Mr.Delphist  
Дата: 03.12.19 13:17
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Mr.Delphist, Вы писали:


MD>>Swift (паттерн-матчинг и деконструкция)


НС> При чем тут Свифт? Это все обсуждалось когда еще никакого свифта даже в проекте не было. Самим же идеям уже несколько десятилетий.


Безусловно, все языковые идеи укладываются в две-три старых парадигмы времён мистера Беббиджа, ничего нового не родилось и не сможет (как невозможно возникновение внеземной жизни на Земле). Но паттерн-матчинг и деконструкция есть в таком куда более молодом языке как Swift (2014), а в таком старичке как C# (2000) — всё ещё в процессе прикручивания. Никакого иного скрытого смысла тут нет.
Re[3]: C# 8 - фича №1
От: Kolesiki  
Дата: 03.12.19 14:03
Оценка: +1
Здравствуйте, alexzzzz, Вы писали:

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


>>> You can retrieve the last word with the ^1 index:

K>>За подобные вещи я б увольнял в тот же день — за этот идиотизм их проклянут навеки. Хотя... кого я хаю — банду индусни!

A>Выбрали самый естественный вариант.


Самый тупой из всех возможных.
Индекс ПЕРВОГО элемента массива знают даже дети — 0. abc[0] — первый элемент. Сикарашка "^" нам говорит: а теперь мы считаем элементы с конца. И чтобы взять последний элемент... просто напиши abc[^0]! Это же логично!
Даже в плане употребления это намного правильнее. Никому не нужна "длина массива" — она неуклюжа как раз тем, что напрямую с массивом её нельзя использовать — её ВСЕГДА приходится вычитать. А понятие "индекс с конца" как раз и удобен тем, что видимый индекс и есть естественный индекс, как если бы мы считали от начала массива.

A>... а на практике проще и удобнее именно так.


Ровно наоборот — ваша неуклюжая практика как раз заставляет вычитать ненужную единицу из длины массива. Моя практика сразу пользуется естественным отсчётом.

K>>Readonly members — можно сделать автоматом — человек тут не нужен.


A>Нельзя автоматом — теряется половина смысла.


Тут согласен, но строго говоря, у меня вообще ни разу такого случая не было, чтобы "по ошибке" я лез переинициализировать целую структуру! Это довольно тупая ошибка и клянусь, если ЭТО для них проблема — вон из профессии! Это далеко не те вещи, о которых надо заботиться программисту.
Re[2]: C# 8 - фича №1
От: Kolesiki  
Дата: 03.12.19 14:12
Оценка:
Здравствуйте, alexzzzz, Вы писали:

A>Из всех новых фич мне непонятна только одна: Indices and ranges. А именно, какую проблему пытались решить?


Осмелюсь предположить, что MS-хипстота таки добралась до D и увидев, насколько мощно и логично выглядит "библиотека на диапазонах", обкакались от досады и непременно решили прикрутить во что бы то ни стало. Прикрутили. Как могли. С идиотским индексом конца "^1". Ну, кто ж убогого осудит! Сделали и сделали. Только позабыли, что на этих индексах построена ВСЯ библиотека Ди. В отличии от их новосклёпанного Core и тем более старичка Windows.FW; Вопрос: а смысл вообще?? "Шоб було?"
Получается, решили "проблему ущемлённого достоинства", только и всего.
Re: C# 8 - фича №1
От: sergeya Ниоткуда http://blogtani.ru
Дата: 03.12.19 14:24
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Что из этого списка вы бы назвали наиболее важным и полезным: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8


Pattern matching + Switch expressions. Очень не хватает после Nemerle.

Асинхронные потоки пока не распробовал, возможно буду использовать.

Остальное для меня не так актуально.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[4]: C# 8 - фича №1
От: Jack128  
Дата: 03.12.19 14:24
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Самый тупой из всех возможных.

K>Индекс ПЕРВОГО элемента массива знают даже дети — 0. abc[0] — первый элемент. Сикарашка "^" нам говорит: а теперь мы считаем элементы с конца. И чтобы взять последний элемент... просто напиши abc[^0]! Это же логично!
Как часто ты будешь брать элементы по индексу и как часто ты будешь slice'ы до конца коллекции делать ?? ибо в твоем варианте, чтоб сделать копию коллекции нужно collection[0..^-1] писать, что вообще за гранью.
Re[4]: C# 8 - фича №1
От: alexzzzz  
Дата: 03.12.19 14:28
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Индекс ПЕРВОГО элемента массива знают даже дети — 0. abc[0] — первый элемент. Сикарашка "^" нам говорит: а теперь мы считаем элементы с конца. И чтобы взять последний элемент... просто напиши abc[^0]! Это же логично!


Смотря, что ты считаешь концом массива. Логично, что последний элемент находится перед концом массива, а после или на конце ничего нет.
Re[4]: C# 8 - фича №1
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 03.12.19 14:30
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:



MD>Безусловно, все языковые идеи укладываются в две-три старых парадигмы времён мистера Беббиджа, ничего нового не родилось и не сможет (как невозможно возникновение внеземной жизни на Земле). Но паттерн-матчинг и деконструкция есть в таком куда более молодом языке как Swift (2014), а в таком старичке как C# (2000) — всё ещё в процессе прикручивания. Никакого иного скрытого смысла тут нет.


Именно потому, что C# (2000) не так просто было и прикрутить ПМ. Тот же немерль и новый F# имеют ПМ изначальною
Тут на самом то деле нужны и Positional patterns и property pattern и как это совместить с уже существующем синтаксисе.
и солнце б утром не вставало, когда бы не было меня
Re[5]: C# 8 - фича №1
От: alexzzzz  
Дата: 03.12.19 14:30
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Как часто ты будешь брать элементы по индексу и как часто ты будешь slice'ы до конца коллекции делать ?? ибо в твоем варианте, чтоб сделать копию коллекции нужно collection[0..^-1] писать, что вообще за гранью.


С диапазонами проще:
1) .. — весь диапазон
2) ..i — от начала до i не включая
3) i..j — от i до j не включая
4) j.. — от j до конца
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.