|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
ЕвгенийВhVosttПока что приходится использовать атрибуты [NotNull], [CanBeNull], [ItemNotNull], [ItemCanBeNull]. Выглядит уродски, но приходится мириться, так как эти атрибуты экономят просто огроменное количество времени, убивая возможные NullReferenceException в зародыше. И кодить гораздо комфортней. А подробнее? Код: c# 1. 2. 3. 4. 5.
Теперь: 1. При анализе реализации функции SomeFunc: 1.1. мы сразу видим проблему если возвращается null 1.2. мы сразу видим проблему, если используем arg2 и не проверяем на null 2. При анализе вызовов SomeFunc: 2.1. не надо проверять полученное значение на null 2.2. мы сразу видим проблему, если передаём в качестве arg1 null Если использовать это повсеместно, то накосячить очень трудно. Анализатор не пропустит даже на компиляцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 11:50 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КНе понравилось. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 11:51 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
ЕвгенийВ, А хотелось бы писать так: Код: c# 1. 2. 3. 4.
Подсвеченное нигде не описано, но это уж совсем было бы хорошо ) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 11:54 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
hVosttАлексей КНе понравилось. Почему?Не вижу практических задач, где это настолько востребовано, чтобы выносить данные возможности на уровень языка. Есть опасения, что в перспективе C# превратится в помойку, содержащую массу ненужных возможностей. Лучше бы сделали что-то действительно полезное. Например, возможность использования анонимных классов за пределами одного метода или добавили бы синтаксический сахар для описания таких конструкций: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 11:59 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КНе вижу практических задач, где это настолько востребовано, чтобы выносить данные возможности на уровень языка. У нас полно таких задач. Они появляются, когда задачи становятся сложнее чем банальное CRUD приложение. Вот просто для примера, мы заменили наш код на новые конструкции языка в десятке классов. Общее количество строк уменьшилось где-то на 10-15%, без изменения логики. Код стал выразительнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 12:02 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КНапример, возможность использования анонимных классов за пределами одного метода И как ты подставишь анонимный класс в параметры метода, не потеряв типизацию? Просто логически подумай. Тут дело не в том, что они не хотят сделать такую возможность. Эта задача не решаема. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 12:03 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей К, С другой стороны, добавили кортежи, это решает твою проблему с анонимными классами. Есть кортежи с именованными полями, их можно возвращать и передавать, не объявляя новых классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 12:04 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
hVosttАлексей КНапример, возможность использования анонимных классов за пределами одного метода И как ты подставишь анонимный класс в параметры метода, не потеряв типизацию? Просто логически подумай. Тут дело не в том, что они не хотят сделать такую возможность. Эта задача не решаема.В TypeScript эта задача решена. Было бы желание. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 12:10 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
hVosttАлексей К, С другой стороны, добавили кортежи, это решает твою проблему с анонимными классами. Есть кортежи с именованными полями, их можно возвращать и передавать, не объявляя новых классов.Мне это нужно для использования в EntityFramework, чтобы не было необходимости описывать классы, под возвращаемые запросами данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 12:12 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КВ TypeScript эта задача решена. Было бы желание. Не решена, там другая платформа и другая парадигма. Не надо заливать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 12:32 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КМне это нужно для использования в EntityFramework, чтобы не было необходимости описывать классы, под возвращаемые запросами данные. Это понятно, но это нельзя сделать в типизированном языке в принципе. Код: c# 1.
Откуда вызывающей стороне знать что там возвращается изнутри SelectToAnonymousResult? На уровне интерфейса SomeService? Как ты предлагаешь этот интерфейс описать? Ты можешь вернуть IEnumerable<dynamic> и работать с этим как в JavaScript, кто мешает? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 12:36 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
hVosttАлексей КМне это нужно для использования в EntityFramework, чтобы не было необходимости описывать классы, под возвращаемые запросами данные. Это понятно, но это нельзя сделать в типизированном языке в принципе. Код: c# 1.
Откуда вызывающей стороне знать что там возвращается изнутри SelectToAnonymousResult? На уровне интерфейса SomeService? Как ты предлагаешь этот интерфейс описать? Ты можешь вернуть IEnumerable<dynamic> и работать с этим как в JavaScript, кто мешает?Вывести тип, возвращаемый методом, можно, в TypeScript это реализовано. Придумать синтаксис, присваивающий выведенному типу имя, не должно быть проблемой. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 13:38 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
hVostt И как ты подставишь анонимный класс в параметры метода, не потеряв типизацию? Просто логически подумай. Тут дело не в том, что они не хотят сделать такую возможность. Эта задача не решаема. С помощью небольшой хитрости. Код: c# 1. 2. 3. 4. 5.
Использование Код: c# 1.
Алексей КВ TypeScript эта задача решена. Было бы желание. Как? Просвяти? Алексей К или добавили бы синтаксический сахар для описания таких конструкций: Код: c# 1.
Было бы не плохо считать например так let MyExpression = o => o.Value; это Expression<Func<MyClass, int>> MyExpression = o => o.Value; var MyExpression = o => o.Value; это Func<MyClass, int> MyExpression = o => o.Value; В F# это разрешено, но там лучше вывод типов и генерики двух типов.... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 13:42 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КВывести тип, возвращаемый методом, можно, в TypeScript это реализовано. Придумать синтаксис, присваивающий выведенному типу имя, не должно быть проблемой. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Таки в 7.0 Код: c# 1. 2. 3. 4.
Вызывай хоть откуда, intellisense тебе подскажет, что это ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 13:48 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
ЕвгенийВТаки в 7.0Ну покажи как это можно срастить с EntityFramework. В одном методе запрос, в другом методе обработка результата запроса, без описания класса для возвращаемых запросом записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 13:53 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
ААААААААААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!! ValueTuple нельзя использовать в сопоставлении с образом АААААААААААААААААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 14:02 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
ЕвгенийВАлексей К или добавили бы синтаксический сахар для описания таких конструкций: Код: c# 1.
Было бы не плохо считать например так let MyExpression = o => o.Value; это Expression<Func<MyClass, int>> MyExpression = o => o.Value; var MyExpression = o => o.Value; это Func<MyClass, int> MyExpression = o => o.Value; В F# это разрешено, но там лучше вывод типов и генерики двух типов....Я бы сделал так, для приведённого мной выше примера: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 14:03 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КЕвгенийВТаки в 7.0Ну покажи как это можно срастить с EntityFramework. В одном методе запрос, в другом методе обработка результата запроса, без описания класса для возвращаемых запросом записей. Пиши вместо new{.....} - () и используй. Код: c# 1. 2. 3. 4. 5.
Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 14:08 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
ЕвгенийВААААААААААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!! ValueTuple нельзя использовать в сопоставлении с образом АААААААААААААААААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Нет подстановочных символов и вообще в Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
(4, 5, 6) - не является постоянным значением! ААААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 14:10 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КВывести тип, возвращаемый методом, можно, в TypeScript это реализовано. Придумать синтаксис, присваивающий выведенному типу имя, не должно быть проблемой. Эмм.. Расскажи нам, как ты определишь анонимный тип в интерфейсе. Предложи просто синтаксический способ, забьём пока на возможность реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 15:25 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
Алексей КНу покажи как это можно срастить с EntityFramework. В одном методе запрос, в другом методе обработка результата запроса, без описания класса для возвращаемых запросом записей. Хоспади, если тебе нужны динамические наборы, тебе не EF нужен, а DataTable, который уже наверное сединой покрылся от старости. Также чем не устраивает возвращаеть анонимы через dynamic? Т.е. конечно это всё полная лажа, ведь хочется типизации. Но как насчёт интерфейса. Покажи метод интерфейса, возвращающий анонимный тип, со статической типизацией. Вот просто, как бы это могло быть. И как интерфейс выведет тип из реализации. В общем, ппц проблему нашёл ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 15:29 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
hVostt, object подвластно всё :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 15:50 |
|
Запуск Visual Studio 2017
|
|||
---|---|---|---|
#18+
is - остался не перегружаемым оператором ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2017, 16:13 |
|
|
start [/forum/topic.php?fid=20&msg=39420657&tid=1400000]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 412ms |
0 / 0 |