|
|
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Объясните, пожалуйста, что обозначает фрагмент "(key, oldValue) => oldValue + 1" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:34 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
ЖентосОбъясните, пожалуйста, что обозначает фрагмент "(key, oldValue) => oldValue + 1" это лямбда-выражение (объект-функция, созданный прямо в коде, "на лету"). тоже самое что "анонимный метод" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:46 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
Спасибо, прочитал про анонимные методы и лямда-выражения. Осталось непонятно, откуда параметры "key, oldValue" взялись? Явно они не описаны, делегата в примере тоже нет (пример я из MSDN скопировал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 17:04 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
ЖентосСпасибо, прочитал про анонимные методы и лямда-выражения. Осталось непонятно, откуда параметры "key, oldValue" взялись? Явно они не описаны, делегата в примере тоже нет (пример я из MSDN скопировал) имена аргументов анонимной функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 17:17 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
Nafимена аргументов анонимной функции Это я понял. Я не понимаю, как компилятор понимает, что key и oldValue равны 1 изначально. Получается, что компилятор видит структуру KeyValuePair<TKey, TValue> -- элемент коллекции ConcurrentDictionary изнутри, но у этой структуры нет поля oldValue... Мне понятно, что лямбда-функция постоянно увеличивает из двух переданных параметров второй на единицу, мне непонятно: откуда лямбда-функция знает, что "точкой отсчета" является (1, 1), и как сохраняется промежуточное значение P.S. Я очень слабо знаю С#, и потому спрашиваю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 17:51 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
ЖентосЭто я понял. Я не понимаю, как компилятор понимает, что key и oldValue равны 1 изначально.cd.AddOrUpdate(1, 1, (key, oldValue) => oldValue + 1); AddOrUpdate третьим параметром принимает ссылку на метод. И внутри себя вызывает этот метод, передавая ему параметры 1 и 1. Так key, oldValue внутри метода становятся единицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 18:04 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
Яростный Мечcd.AddOrUpdate(1, 1, (key, oldValue) => oldValue + 1); AddOrUpdate третьим параметром принимает ссылку на метод. И внутри себя вызывает этот метод, передавая ему параметры 1 и 1. Так key, oldValue внутри метода становятся единицами. Я понимаю, что третий параметр -- делегат Func<T1, T2, TResult> public delegate TResult Func<in T1, in T2, out TResult>( T1 arg1, T2 arg2 ) Мне не понятно, откуда в T1 и T2 единицы -- они же не объявлены явно. Именно момент передачи параметров не понятен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 18:16 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
ЖентосИменно момент передачи параметров не понятен вызов делегата и передача параметров происходят внутри AddOrUpdate, как уже говорилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 18:20 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
10969507 Вот, если бы этот момент Вы разжевали, я был бы очень благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 18:39 |
|
||
|
C# -- помогите разобрать код
|
|||
|---|---|---|---|
|
#18+
Жентос 10969507 Вот, если бы этот момент Вы разжевали, я был бы очень благодарен что не понятно? там внутри примерно такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 15:42 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=82&tid=1342829]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
71ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 355ms |

| 0 / 0 |
