powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вывод анонимного типа из ЛМ
9 сообщений из 9, страница 1 из 1
Вывод анонимного типа из ЛМ
    #39272776
Алексей Шм.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, каким должен быть тип возвращаемого аргумента в делегате, чтобы лямбда-выражение вернуло анонимный тип?

Код: c#
1.
Func<int, ?????> mydel=(x)=>new {ID=x};
...
Рейтинг: 0 / 0
Вывод анонимного типа из ЛМ
    #39272793
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Шм.,
Код: c#
1.
2.
3.
 Func<int,dynamic> mydel= (x) => new { ID = x };
 dynamic d= mydel.Invoke(2);
 Console.Write(d.ID);
...
Рейтинг: 0 / 0
Вывод анонимного типа из ЛМ
    #39273592
Алексей Шм.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Спасибо! Все круто, все работает.
Изучаю основы Linq по этой книге http://www.ozon.ru/context/detail/id/27933250/ .
На 309 стр. есть пример
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 var collection = Enumerable.Range(0.10)
                              .Where(x => x % 2 !=0 )
                               .Reverse()
                               .Select (x=> new {Original=x, SquareRoot=Math.Sqrt(x)});
            foreach (var element in collection)
            {
                Console.WriteLine("sqrt({0})={1}", element.Original, element.SquareRoot));
            }


Метод Select ожидает Func<TSourse, TResult> и вроде бы без dynamic-а..Или только так кажется? Что за механизм?
...
Рейтинг: 0 / 0
Вывод анонимного типа из ЛМ
    #39273625
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Шм.Где-то в степи,

Спасибо! Все круто, все работает.
Изучаю основы Linq по этой книге http://www.ozon.ru/context/detail/id/27933250/ .
На 309 стр. есть пример
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 var collection = Enumerable.Range(0.10)
                              .Where(x => x % 2 !=0 )
                               .Reverse()
                               .Select (x=> new {Original=x, SquareRoot=Math.Sqrt(x)});
            foreach (var element in collection)
            {
                Console.WriteLine("sqrt({0})={1}", element.Original, element.SquareRoot));
            }


Метод Select ожидает Func<TSourse, TResult> и вроде бы без dynamic-а..Или только так кажется? Что за механизм?
Компилятору и так понятно, что на входе Int, а на выходе Dynamic, это же очевидно =)
...
Рейтинг: 0 / 0
Вывод анонимного типа из ЛМ
    #39273639
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Шм.,
во втором случае компилятор сделал анонимный тип и с ним работает в пределах видимости результирующей переменной
бубен зазвучит тогда когда вы попытаетесь вытащить эту переменную наружу.
...
Рейтинг: 0 / 0
Вывод анонимного типа из ЛМ
    #39273644
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
++
как же соотносится это к первому примеру
Func<int,dynamic> mydel= (x) => new { ID = x };
очень просто вы обвили указатель на функцию Func<int,dynamic> mydel;
и инициализировали ее функцией которая выкидывает наружу анонимный тип, а снаружи х.его знает что за говно оттуда лезет ((
вот и приходится приводить ее к объектам, а там и до рефлексии не далеко. но есть конечно хитрые способы, мало кто про них знает, но есть.
...
Рейтинг: 0 / 0
Вывод анонимного типа из ЛМ
    #39273655
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Шм.,
об этом мало кто то же помнит
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 Action d = null;
            for (int i = 0; i < 3; i++)
            {
                if (d == null)
                {
                    d = () =>
                    {
                        Console.WriteLine(i);
                    };
                }
                else
                {
                    d += () =>
                    {
                        Console.WriteLine(i);
                    };
                }
            }
            d.Invoke();
...
Рейтинг: 0 / 0
Вывод анонимного типа из ЛМ
    #39273892
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesАлексей Шм.Где-то в степи,

Спасибо! Все круто, все работает.
Изучаю основы Linq по этой книге http://www.ozon.ru/context/detail/id/27933250/ .
На 309 стр. есть пример
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 var collection = Enumerable.Range(0.10)
                              .Where(x => x % 2 !=0 )
                               .Reverse()
                               .Select (x=> new {Original=x, SquareRoot=Math.Sqrt(x)});
            foreach (var element in collection)
            {
                Console.WriteLine("sqrt({0})={1}", element.Original, element.SquareRoot));
            }


Метод Select ожидает Func<TSourse, TResult> и вроде бы без dynamic-а..Или только так кажется? Что за механизм?
Компилятору и так понятно, что на входе Int, а на выходе Dynamic, это же очевидно =)
Тут не dymanic, тут именно анонимный тип!
...
Рейтинг: 0 / 0
Вывод анонимного типа из ЛМ
    #39273909
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиАлексей Шм.,
во втором случае компилятор сделал анонимный тип и с ним работает в пределах видимости результирующей переменной
бубен зазвучит тогда когда вы попытаетесь вытащить эту переменную наружу.
Помните братья о Святой Конкордии IoC.
Почти всегда эту "наружу" можно втянуть вовнутрь.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
static void Test<T>(Func<T> fun, Action<T> act)
        {
            var x = fun();
            act(x);
        }

        static void Main(string[] args)
        {
            Test(
                ()=>new  {Id=1, Name="qwe"}
                , x =>
                {
                    Console.WriteLine(x);
                });}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вывод анонимного типа из ЛМ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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