powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Анонимные типы C# v.6
10 сообщений из 10, страница 1 из 1
Анонимные типы C# v.6
    #39363600
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 = "нулевой элемент" };
        }
    }
...
Рейтинг: 0 / 0
Анонимные типы C# v.6
    #39363666
Т-Миронов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Анонимные типы C# v.6
    #39363770
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т-МироновЭто все актуально и для C# 5.
Это и на FW 4.0 будет прекрасно работать.
...
Рейтинг: 0 / 0
Анонимные типы C# v.6
    #39363783
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitC,

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

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

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

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

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

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

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

реально, лучше объявить конкретный класс.
+1
вопрос закрыт.
...
Рейтинг: 0 / 0
Анонимные типы C# v.6
    #39364744
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Анонимные типы C# v.6
    #39364760
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

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


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