Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Анонимные типы C# v.6 / 10 сообщений из 10, страница 1 из 1
09.12.2016, 16:07
    #39363600
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
Доброго времени!

почитываю шестую версию C#.
дошёл до динамического связывания.
правильно ли я понял, что с помощью dynamic можно возвращать анонимный тип из сторонней функции (т.е. где этот тип не объявлен) и обращаться к его членам?
код ниже работает, но насколько он будет корректен?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class Program
    {
        static void Main(string[] args)
        {
            dynamic d = GetObj();

            Console.WriteLine("id = {0}\nname = '{1}'", d.id, d.name);

            Console.ReadKey();
        }

        private static object GetObj()
        {
            return new { id = 0, name = "нулевой элемент" };
        }
    }
...
Рейтинг: 0 / 0
09.12.2016, 16:53
    #39363666
Т-Миронов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
WitCДоброго времени!

почитываю шестую версию C#.
дошёл до динамического связывания.
правильно ли я понял, что с помощью dynamic можно возвращать анонимный тип из сторонней функции (т.е. где этот тип не объявлен) и обращаться к его членам?
код ниже работает, но насколько он будет корректен?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class Program
    {
        static void Main(string[] args)
        {
            dynamic d = GetObj();

            Console.WriteLine("id = {0}\nname = '{1}'", d.id, d.name);

            Console.ReadKey();
        }

        private static object GetObj()
        {
            return new { id = 0, name = "нулевой элемент" };
        }
    }



Это все актуально и для C# 5. Но очевидно не стоит использовать динамические типы для транспорта параметров. и не стоит использовать dynamic если на это нет везких оснований (например взаиможесйствие с COM, run-time генерируемые типы).
...
Рейтинг: 0 / 0
09.12.2016, 18:29
    #39363770
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
Т-МироновЭто все актуально и для C# 5.
Это и на FW 4.0 будет прекрасно работать.
...
Рейтинг: 0 / 0
09.12.2016, 18:46
    #39363783
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
WitC,

а чё анонимные?
...
Рейтинг: 0 / 0
09.12.2016, 22:17
    #39363874
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
Relic Hunter,

вопрос был про анонимные типы, через динамическое связывание.
можно обозвать динамическое связывание и анонимные типы.
суть в следующем, к членам возвращённого анонимного типа из другого метода, можно обратиться.
возможно это всё и тянется ещё с ФВ 4.0, но я как-то обратил внимание на это только сейчас.
вот и заинтересовал вопрос. технически это работает. как сточки зрения эстетики, читабельности etc.

вижу, что сообщество не очень приветствует. меня тоже как-то стремает...
...
Рейтинг: 0 / 0
09.12.2016, 22:27
    #39363882
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
WitCправильно ли я понял, что с помощью dynamic можно возвращать

..можно возвращать что угодно. На то он и dynamic. Но.

1) просядет производительность, довольно ощутимо
2) давай досвидания Intellisens, проверка типов и прочие плюшки
3) возможность отхватить runtime exception на пустом месте
...
Рейтинг: 0 / 0
09.12.2016, 22:32
    #39363883
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
WitCвижу, что сообщество не очень приветствует. меня тоже как-то стремает...

дело не в том, что приветствует или нет, это заведомо неправильный подход. если у тебя функция возвращает хоть и анонимный, но весьма конкретный тип с конкретным набором полей, что мешает определить класс, при чём никто не заставляет этот класс определять глобально, определи подкласс. если у тебя функция возвращает в разных обстоятельствах разные анонимные типы, то это ошибка разработки, просто тупо неправильный поход в реализации просто по своей сути, dynamic тут не при чём.

ну и dynamic вообще для других целей был придуман. и следует избегать применения, если не будет ощутимого профита по всем фронтам. например, работа с COM-объектами, или скриптование.
...
Рейтинг: 0 / 0
09.12.2016, 23:47
    #39363917
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
hVostt1) просядет производительность, довольно ощутимо
2) давай досвидания Intellisens, проверка типов и прочие плюшки
3) возможность отхватить runtime exception на пустом месте

реально, лучше объявить конкретный класс.
+1
вопрос закрыт.
...
Рейтинг: 0 / 0
12.12.2016, 11:07
    #39364744
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
WitC,
можно юзать колбек функцию.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public static void Test<T>(Func<T> fun, Action<T> act)
        {
            var x = fun();
            act(x);
        }

 Test(() => new { id = 0, name = "нулевой элемент" },
                x => Console.WriteLine($"id - {x.id}, name - {x.name}"));
...
Рейтинг: 0 / 0
12.12.2016, 11:34
    #39364760
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анонимные типы C# v.6
ЕвгенийВ,

Ничего не изменилось. Надо код написать, чтобы тип вывелся, колбек можно выкинуть и написать прям на месте.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Анонимные типы C# v.6 / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]