Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Решил перейти на С# (http://www.flasher.ru/forum/showthread.php?t=215635)

caseyryan 01.08.2018 12:15

Цитата:

чем различается foreach цикл для Array и List?
чем различается локальная функция и short lambda
чем различается event и delegate?
чем различается if(SomeEvent != null) SomeEvent(); и SomeEvent?.Invoke()?
Вот как раз на все эти вопросы есть ответы в книжке Albahari) при чем в первой половине, или даже трети книги.
Цитата:

читать книги по 6-му шарпу, когда на подходе восьмой, ну я даже не знаю..
мм. А у вас на работе как только выходит новая версия языка все сразу переходят на неё? Если так, то у вас видимо, очень прогрессивная компания.
Обычно приходишь на какой-то проект, а он написан еще на бородатой версии языка, и никому нафиг не надо переходить на новую, ибо много рефакторить и неизвестно какие баги из-за этого всплывут. 6ю версию точно учить надо. У нас на работе вообще сейчас пилим проект, который еще на 4й

СлаваRa 01.08.2018 12:27

Да, у нас во всю используются возможности последней релиз версии языка.
Часть вопросов которые я задал - это вопросы из основ, они есть везде, но вот например мне интересно, что в той книге про foreach, именно в контексте вопроса и что именно написано про последний пункт. Хотя я вопросы задал не для того, чтобы померяться :)

Bletraut 01.08.2018 12:56

Когда я изучал js, то у меня была масса тупых вопросов и костыльных решений из-за того, что я не представлял возможностей языка. Прочитав несколько книг по js (на это ушло всего лишь пару недель, потому что я не заучиваю команды) глупые вопросы сразу отпали, а когда знаешь основы, то дальше гуглить. По своей практике заметил, что без знания возможностей языка и основных команд, изучение через гугл занимает гораздо больше времени.

caseyryan 01.08.2018 20:47

Цитата:

и что именно написано про последний пункт
Кусочек текста. Вообще там дофига чего написано про оператор "элвис", но мне в лом копировать из пдф из-за дурацкой прокрутки.
Цитата:

Null-conditional operator (C# 6)
The ?. operator is the null-conditional or “Elvis” operator, and is new to C# 6. It
allows you to call methods and access members just like the standard dot operator,
except that if the operand on the left is null, the expression evaluates to null instead
of throwing a NullReferenceException:
System.Text.StringBuilder sb = null;
string s = sb?.ToString(); // No error; s instead evaluates to null
The last line is equivalent to:
string s = (sb == null ? null : sb.ToString());
Upon encountering a null, the Elvis operator short-circuits the remainder of the
expression. In the following example, s evaluates to null, even with a standard dot
operator between ToString() and ToUpper():
System.Text.StringBuilder sb = null;
string s = sb?.ToString().ToUpper(); // s evaluates to null without error

Цитата:

что в той книге про foreach, именно в контексте вопроса и что именно написано про последний пункт
Там ты не найдешь именно по контексту вопроса конкретный ответ. В книжке есть подробное описание работы этого цикла, что делает компилятор при этом, про касты, боксинг и много всего. Если я сам правильно понял твой вопрос, то разница в том, что для массива тип известен компилятору сразу, и дополнительный внутренний каст не нужен. Для дженерик листа потребуется каст.
Если я не прав, поправь.

СлаваRa 01.08.2018 21:20

?. - оператор я специально привел в связке с эвентом, ибо вся фишка именно в связке.
про массив и лист, никакого каста не надо, но для массива цикл превратится в for, потому что срабатывает специальная оптимизация, а для листа будет создан итератор, вопрос был про это:)

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

Appleman 02.08.2018 00:15

Почему этот оператор называется словом "Элвис"?

СлаваRa 02.08.2018 01:23

из-за "прически" :)

caseyryan 02.08.2018 09:34

Цитата:

Почему этот оператор называется словом "Элвис"?
Цитата:

из-за "прически" :)
Я всегда думал, что это из-за того, что ?. похоже на позы элвиса, когда он всяко кривлялся возле микрофона
https://i.ytimg.com/vi/2kQfdlm_d0Q/maxresdefault.jpg
Цитата:

я еще не встречал книг где это все разбирается и описывается как и почему это применяется на практике, про элвис и евент, этот кейс имеет даже класификацию для статических анализаторов. На самом деле таких вопрос очень много)
Это мой косяк, что я не обратил внимание, что там Event написано. Этот сценарий в книге есть в разделе событий.
Цитата по элвису с ивентами
Цитата:

In multithreaded scenarios (Chapter 14), you need to assign
the delegate to a temporary variable before testing and invok‐
ing it to avoid a thread-safety error:
var temp = PriceChanged;
if (temp != null) temp (this, e);
We can achieve the same functionality without the temp vari‐
able from C# 6 with the null-conditional operator:
PriceChanged?.Invoke (this, e);
Being both thread-safe and succinct, this is now the best gen‐
eral way to invoke events.
Вкратце, элвисом можно заменить проверку на безопасность в многопоточном сценарии
Цитата:

я еще не встречал книг где это все разбирается и описывается как и почему это применяется на практике, про элвис и евент, этот кейс имеет даже класификацию для статических анализаторов. На самом деле таких вопрос очень много)
Так практика на то и практика. Есть разные кукбуки или книжки по подготовке к сертификации 70-483, но, естественно, они всего покрыть не могут

Psycho Tiger 04.08.2018 13:52

`?:` это elvis, `?.` это safe navigation operator

СлаваRa 04.08.2018 15:57

Тем, он называется Елвис оператор, но ты молодец, потому что правильный элвис - ?: тот который устраняет тернаки :)


Часовой пояс GMT +4, время: 14:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.