Еще раз про замыкания
От: merge  
Дата: 09.11.10 08:58
Оценка: :)))
Вот много почитал, но так до конца и не понял пока реального применения замыканий.
Кто может парой-тройкой Реальных примеров показать их применение.

Вот пишут, что замыкания имеют доступ к внешним переменным доступ,
но такой простой пример с анонимным методом тоже имеет доступ к внешней переменной sum


private delegate dynamic GetSum();
        
        static void Main()
        {
            dynamic sum;
            int[] arr = new[] {1, 4, 5};

            GetSum delegateInstance = delegate() { return sum = arr.Sum(); };
            delegateInstance();
        }
Re: Еще раз про замыкания
От: LF  
Дата: 09.11.10 09:10
Оценка: +1
M>
M>private delegate dynamic GetSum();
        
M>        static void Main()
M>        {
M>            dynamic sum;
M>            int[] arr = new[] {1, 4, 5};

M>            GetSum delegateInstance = delegate() { return sum = arr.Sum(); };
M>            delegateInstance();
M>        }
M>

это и есть замыкание
Re: Еще раз про замыкания
От: Sinix  
Дата: 09.11.10 09:13
Оценка: 1 (1) +1
Здравствуйте, merge, Вы писали:

M>Вот пишут, что замыкания имеют доступ к внешним переменным доступ,

M>но такой простой пример с анонимным методом тоже имеет доступ к внешней переменной sum
Так это ж и есть замыкания

*Оффтоп:
Зачем dynamic?
Re[2]: Еще раз про замыкания
От: merge  
Дата: 09.11.10 10:12
Оценка:
Здравствуйте, Sinix, Вы писали:

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


M>>Вот пишут, что замыкания имеют доступ к внешним переменным доступ,

M>>но такой простой пример с анонимным методом тоже имеет доступ к внешней переменной sum
S>Так это ж и есть замыкания

S>*Оффтоп:

S>Зачем dynamic?

пример я высосал из пальца. Хочу понять, когда реальные примеры использования замыканий. Ссылочкой не поделитесь или парой примеров
Re[3]: Еще раз про замыкания
От: WolfHound  
Дата: 09.11.10 10:55
Оценка:
Здравствуйте, merge, Вы писали:

M>пример я высосал из пальца. Хочу понять, когда реальные примеры использования замыканий. Ссылочкой не поделитесь или парой примеров

Тут их мегабайты
http://code.google.com/p/nemerle/source/browse/#svn/nemerle/trunk
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Еще раз про замыкания
От: MozgC США http://nightcoder.livejournal.com
Дата: 09.11.10 11:27
Оценка: 1 (1) +1
Может эта статья окажется для вас полезной: Замыкания в языке программирования C#
Re: Еще раз про замыкания
От: LR  
Дата: 09.11.10 12:56
Оценка:
Здравствуйте, merge, Вы писали:


M>Вот пишут, что замыкания имеют доступ к внешним переменным доступ,

M>но такой простой пример с анонимным методом тоже имеет доступ к внешней переменной sum

M>
M>private delegate dynamic GetSum();
        
M>        static void Main()
M>        {
M>            dynamic sum;
M>            int[] arr = new[] {1, 4, 5};

M>            GetSum delegateInstance = delegate() { return sum = arr.Sum(); };
M>            delegateInstance();
M>        }
M>


Это и есть замыкание
Материал из Википедии — свободной энциклопедии, -_*
Re: Еще раз про замыкания
От: Spiceman  
Дата: 09.11.10 17:14
Оценка:
Здравствуйте, merge, Вы писали:

M>Кто может парой-тройкой Реальных примеров показать их применение.


Используется в большинстве linq запросов. Например:
int a = 0;
var q = list.Where(x => x == a);


А вот еще пример
Автор: Spiceman
Дата: 16.10.08
и пример
Автор: Spiceman
Дата: 24.11.09
. Только они не из реальной жизни

Думаю, что использовать надо там, где без замыканий код становится сложным и нечитаемым.
Re[4]: Еще раз про замыкания
От: mrTwister Россия  
Дата: 12.11.10 21:43
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

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


M>>пример я высосал из пальца. Хочу понять, когда реальные примеры использования замыканий. Ссылочкой не поделитесь или парой примеров

WH>Тут их мегабайты
WH>http://code.google.com/p/nemerle/source/browse/#svn/nemerle/trunk

а если бы у рыбы была шерсть...

лэт ми спик фром май харт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.