Тёмный

.NET 8 i C# 12 - co ten Microsoft ZNOW NALEPIŁ? 

DevMentors
Подписаться 7 тыс.
Просмотров 16 тыс.
50% 1

📅 Listopad to miesiąc, w którym już od paru ładnych lat możemy się spodziewać nowego release’u ze stajni Microsoftu. Już za parę dni, bo 14.11, światło dzienne zobaczy C# 12 i .NET 8 i w związku z tym postanowiliśmy przekonać się co tam ciekawego gigant z Redmond dla nas przygotował.
🤔 W tym materiale przejdziemy przez najciekawsze funkcjonalności - zarówno w języku jak i frameworku - i przeanalizujemy zarówno ich przydatność jak i “jakość” implementacji, która… nie zawsze (naszym zdaniem) jest taka, jakiej byśmy oczekiwali.
⏳ Zanim jednak zabierzemy się za “nowe zabawki” od Microsoftu, zapraszamy Was na krótką wycieczkę po (tej nowszej) historii języka C#, tak by nakreślić kontekst zmian, które pojawią się oficjalnie już za parę dni.
🔗 Linki:
History of C#:
- learn.microsoft.com/en-us/dot...
Frozen Collections:
- github.com/dotnet/runtime/iss...
- github.com/dotnet/runtime/pul...
Jon Skeet - Immutability in C#:
- • Jon Skeet - Immutabili...
⏲ TIMECODES
00:00:00 - Intro
00:01:45 - Historia C# (którą pamiętamy)
00:25:26 - C# 12 - Alias any type
00:34:16 - C# 12 - Collection expressions
00:43:20 - C# 12 - Optional lambda params
00:49:13 - C# 12 - Primary constructors
01:04:37 - C# 12 - Ref readonly
01:11:19 - .NET 8 - Keyed Services (DI)
01:28:57 - .NET 8 - Frozen Collections (System.Collections.Frozen)
01:39:37 - .NET 8 - Time abstractions (TimeProvider)
01:48:33 - Podsumowanie
💬 Zapraszamy również na:
⚡️ Discord: devmentors.io/discord-pl
⚡️ Instagram: / devmentors_pl
⚡️ TikTok: / devmentors
⚡️ Twitter: / dev_mentors_pl

Опубликовано:

 

1 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 68   
@Teczka126
@Teczka126 8 месяцев назад
Czy planujecie podobny materiał dla nowości w Entity Frameworku?
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
szczerze to nie myśleliśmy o tym, ALE... jeżeli pojawi się więcej głosów to dlaczego nie😉 Coś pomyślimy 😀
@jkkk547
@jkkk547 8 месяцев назад
​@@DevMentorsPLw takim razie dołączam do większej liczby głosów
@Marcin-jz8qp
@Marcin-jz8qp 8 месяцев назад
+1
@kashiash
@kashiash 8 месяцев назад
+2
@Mytthewx
@Mytthewx 8 месяцев назад
Zdecydowanie ciśnijcie dalej tematy dotnetowe i entity frameworkowe :D @@DevMentorsPL
@piurek10
@piurek10 8 месяцев назад
nullable type jest bardzo przydatny. Oszczedzą nam sporo niepotrzebnych checków. Daje w prosty sposób znać czy dany typ może tu być nullem czy nie. Jest to ogromny improvement. Minus jest taki że wszyscy developerzy muszą wiedzieć co robią.
8 месяцев назад
Dzięki za podsumowanie!
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Dzięki i pozdrawiamy Ostrą Piłę!
@alanthomenson3818
@alanthomenson3818 8 месяцев назад
Coś nieco podobnego do aliasów jest w C++ (typedef). Jak się ma takie narzędzie, to pokusa żeby przykryć każdą, nieco bardziej złożoną konstrukcję jest ogromna. Obstawiam, że to będzie masowo nadużywane, bo z takim aliasem kod wygląda ładniej i prościej.
@daretsuki6988
@daretsuki6988 8 месяцев назад
Ja też używam Blazora do pisania własnej apki, robi się już dość sporawa, a i nawet ofertę wskoczenia do projektu zaz $$ już miałem, ale widzę że panowie jednak bardziej szanują javascriptowców niż dotnetowców... Hańba!
@janjan-fl8yl
@janjan-fl8yl 8 месяцев назад
Blazor rządzi
@ShagohadPL
@ShagohadPL 8 месяцев назад
Po utworzeniu nowego projektu pierwsze co robię to właśnie "włączenie" Nullable Types jeżeli są nie ma.
@rulff
@rulff 8 месяцев назад
Chcemy EFa! :D
@seg3663
@seg3663 8 месяцев назад
Każdy problem wymagający keyed services można rozwiązać prostując architekturę bez użycia keyed services. Przyklady, ktore pokazaliscie sprawiaja, ze rece opadają.
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Pełna zgoda. Pewnie warto obserwować jak będzie postępować adopcja tego ficzera w community 🤔
@ziomalxxz
@ziomalxxz 8 месяцев назад
Może coś kiedyś o .net MAUI lub .net ML ;) W końcu .net 8 w końcu masa poprawek. Pozdrawiam Serdecznie
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
O ML.NET kiedys chetnie, bo pamietam (jak wspominalem w materiale) czasy przed ML.NET kiedy ani jezyk, ani dostepne biblioteki zycia nie ulatwialy. 🥲 /Michau
@Eddyi0202
@Eddyi0202 8 месяцев назад
Odnośnie Nullable Reference Types to ja osobiście korzystam bo widze z tego korzyść, wole kiedy faktyczne explicite jest podane że metoda może zwracać dany typ referenrencyjny bądź nulla. Ale ważna rzecz że przy tworzeniu nowego projektu od razu konfiguruje csproj tak żeby warningi związane z NRF były traktowane jako errory a nie warningi bo inaczej to się to olewa po prostu xd Z drugiej strony jak ktoś jest leniwy w zespole to po prostu wrzuca null forgiving operator i się nie przejmuje, więc faktycznie lepiej jak jednak cały zespół stara się to wykorzystywać z sensem.
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Dokładnie, wiele jednak zależy od kultury organizacji i tego, na ile każdy respektuje zasady/konwencje przyjęte w projekcie :)
@TeoVincenT1
@TeoVincenT1 8 месяцев назад
To jest mega. Dzięki temu już na poziomie kompilatora mamy wsparcie do pisania kodu opartego o kontrakt, co znacząco ułatwia zrozumienie i utrzymanie kodu. Code review można zrobić o wiele szybciej. Nie muszę się martwić, czy wartość zwrócona tutaj lub tam jest poprawnie obsłużona. Jeśli ktoś jawnie użyje `?`, jest to dla mnie zawsze istotna informacja. Kod piszę tak, aby w ogóle nie było w nim nullowalnych typów referencyjnych. Występują jednak wyjątkowe sytuacje, na przykład przy definiowaniu dostępu do bazy danych w Entity Framework, czyli w DbContext. Tutaj kompilator ostrzega, że podałeś typ not-nullable, ale nigdzie nie ustawiasz go w konstruktorze. Rozwiązuję to dodając słowo kluczowe required, które informuje kompilator, że zawsze, gdy będę chciał stworzyć instancję tego typu, kompilator będzie sprawdzał, czy tę wartość ustawiam. Sztuczka polega na tym, że nigdy nie trzeba ręcznie wywoływać tego konstruktora, ponieważ obiekt jest pobierany z kontenera IoC. Oczywiście są przypadki, w których nie ma innego wyjścia i trzeba użyć operatora nullable, ale są one bardzo rzadkie - ciężko mi przywołać taki przykład. Zdarzają się również sytuacje, gdzie trzeba dodać operator `!`, informujący kompilator, że tutaj nigdy nie będzie nulla. Takie przypadki są również bardzo rzadkie, i zgodnie z zasadą pisania kodu opartego na kontrakcie, ten operator powinien być dodawany na jak najwyższym poziomie, propagując już not-nullable w dół. Konkretny przypykład w którym jest uzasadnione użycie operatora `!`: tworzymy pomocniczą metodę do deserializacji obiektu z JSON, metodę parametryzujemy typem generycznym a w wyniku otrzymujemy obiekt typu object. Wiemy, że jest ten rezultat jest konkretnego typu i wówczas można użyć operatora `as` do rzutowania na ten konkretny typ. Kompilator jednak ostrzeże, że wynikiem tego operatora może być null, więc będzie chciał aby dodać operator `?`. My jednak jesteśmy pewni, że albo deserializacja zwróci nam ten typ, który chcemy, albo rzuci wyjątkiem. Dlatego przy tym operatorze `as` można dodać operator `!`. Podsumowując, moim zdaniem należy pisać kod tak, aby unikać typów nullable, a w skrajnych przypadkach, świadomie dodawać atrybuty lub pragmy kompilatora, wyłączające w danej linii to ostrzeżenie. To pozwala być pewnym, że robimy to celowo, a nie przez przypadek.
@muczos
@muczos 8 месяцев назад
fajnie napisane, moze warto stworzyc kanał albo bloga z taka wiedza :P @@TeoVincenT1
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
super podsumowanie! Dzięki wielkie!@@TeoVincenT1
@piotrlenartowicz9894
@piotrlenartowicz9894 8 месяцев назад
Wszystko fajnie w trakcie pisania kodu (jak jeszcze włączymy errory, zamiast warningow). Ale i tak możemy przekazać null np. przez refleksje, albo z jakiegoś factory method, czy odczytując dane z bazy i nie widziałem opcji na zabezpieczenie przed tym. Dlatego to takie połowiczne zabezpieczenie. Gdyby to waliło wyjątkiem (innym niż null reference exception przy odczycie) trochę jak aspekty używane, np. w postsharp gdzie null zawsze byłby zatrzymany to byłoby fajne. A tak… taka proteza i zamieszanie, bo czasem i tak pojawi się null tam gdzie zakładamy że go nie będzie. Ja nie widzę dla niego zastosowania.
@dziarskihenk8798
@dziarskihenk8798 8 месяцев назад
nullable ref type to imo jedna z najlepszych zmian jaka spotkała c#, korzystamy z niego w każdym projekcie
@burnsnewman
@burnsnewman 8 месяцев назад
1:04:19 Generalnie moim zdaniem to nie była dobra decyzja, żeby zmienne i metody w klasach były z dużych liter. Nie wiem czym była podyktowana, chyba chcieli na siłę się czymś odróżnić od Javy.
@real_belmondziak
@real_belmondziak 7 месяцев назад
Podejmiecie tematykę dotyczącą wejścia na rynek?
@ILogger
@ILogger 8 месяцев назад
Wg. mnie w materiale niedoceniony blazor z nowym render modem (interactive auto). Wg mnie fajna opcja i ogólnie zaczyna on jakoś wyglądać. A że mało osób z niego korzysta... nie znaczy, że jest zły. Jak ktoś zaczyna przygodę z programowaniem i zna C# łatwiej będzie mu wskoczyć w Blazora niż uczyć się JS.
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Nie no pełna zgoda i podkreślaliśmy, że jest to fajna technologia. Ale też weź pod uwagę, że robiąc materiał raczej celujemy w większość ludzi. Pomineliśmy Blazora i EFa myśląc, że mało kogo to będzie obchodzić.. no i community zweryfikowało😀 Myśle, że o Blazorze też coś kiedyś powstanie🫡
@ag-ec5ls
@ag-ec5ls 5 месяцев назад
Materiały z Blazor nie muszą zajmować cały panel danego odcinka. Mogą to być, na samym początku shoty informacyjne :) @@DevMentorsPL
@zaspany0
@zaspany0 8 месяцев назад
Ciekawy kanał, trochę ciężki dla starszych bo co 7 wyrażenie niepopolsku😀 Ale kursy też macie ciężkie (zaawansowane) . Chętnie posłucham o Blazor.
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Nawyki i wyrażenia zostały po przejściu z kanału anglojęzycznego na polski😅 Będziemy z tym walczyć💪 Co do Blazora, niewykluczone, że materiały o nim pojawią się na kanale🫡
@xhypnotizex1835
@xhypnotizex1835 8 месяцев назад
Hehe studiuje już 2 rok Informatykę, na uczelni akurat ciśniemy .NET'a i zastanawiam się dlaczego wcześniej was nie znalazłem. Zadziwiające jest to, że mimo małych liczb robicie bardzo wysokiej jakości materiał :)
@dariuszpawlukiewicz8753
@dariuszpawlukiewicz8753 8 месяцев назад
Dzięki za miłe słowa!💪
@pd5711
@pd5711 8 месяцев назад
Co do keyed services - widzicie zastosowanie innego argumentu w metodzie niż string ?
@slepcu
@slepcu 8 месяцев назад
Enum ?
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
myślę, że w pierwszej kolejności Type (często jednak resolve jest na bazie typu np. komendy) no i pewnie enum
@burnsnewman
@burnsnewman 8 месяцев назад
51:30 Szkoda, że nie zasugerowali się typescriptem i nie pozwolili zrobić `public class User(public Guid Id, private string Email)`
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
O! To w sumie ciekawa uwaga i chyba z dwojga złego byłoby bardziej czytelne. Pytanie też jak z samą implementacją🤔
@konradkorf1374
@konradkorf1374 8 месяцев назад
Jaka to wersja Ridera? Mam najnowszą wersję i nie wspiera ona jeszcze składni collection expressions.
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Trzeba pobrać wersje early access (EAP).
@MarcinSzczygie
@MarcinSzczygie 8 месяцев назад
Spróbowałem nullable types i jest OK - kwestia przestawienia mindsetu. Natomiast wyłączam implicit usings.
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Dużo osób poleca, więc chyba musimy ponownie spróbować polubic sie z nullable types. 👌 /Michau
@emadali1906
@emadali1906 4 месяца назад
Please allow captain so we can utilize translation
@user-og7ko2fo8e
@user-og7ko2fo8e 8 месяцев назад
Tak, wyłączyłem nullable types :D
@muczos
@muczos 8 месяцев назад
U nas w projekcie też korzystamy z Nullable Reference Types. Ogólnie nie od razu - wiec były poźniej ból przejścia. Ale jak już przeszliśmy na to widze w tym duzo wartosci. BTW. Co to za theme w riderze?
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
One Dark - na discordzie linkowaliśmy jara do zaimportowania ;)
@jakubmarcickiewicz774
@jakubmarcickiewicz774 8 месяцев назад
Ja używam blazora.
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
Do zewnętrznych czy wewnętrznych aplikacji? Jak Wam się sprawdza? 🤔 /Michau
@vKarter
@vKarter 8 месяцев назад
Co to za czcionka i kolory ? Theme jakis ?
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
One Dark UI - na discordzie był wrzucany motyw do zaimportowania
@CadillacLizard
@CadillacLizard 8 месяцев назад
ale wybiadolicie jezu ludzie nie mają czasu - gadajcie konkrety
@SZTUKAHARDKORU
@SZTUKAHARDKORU 4 месяца назад
byloby i spoko zeby nie ten angielski wcisniety na sile gdzie tylko mozliwe, najwiekszy minus tej branzy
@drakon660
@drakon660 8 месяцев назад
Primary constructor - no f... way
@Hudypna
@Hudypna 8 месяцев назад
Materiał byłby fajny gdyby nie trwał 2h... ponad połowa czasu to dygresje, osobiste odczucia, opisy z przeszłości, wtrącenia z innych języków programowania, ponglisz. Bardzo ciężko było tego słuchać a samych faktów po 3 zdania, gdy już dochodzimy do opisu kodu to na ekranie nic się nie dzieje, nie wiadomo o której części mówicie. To bardziej podcast dla ludzi, którzy nie mają co robić z czasem niż opis nowych funkcjonalności.
@DevMentorsPL
@DevMentorsPL 8 месяцев назад
To nie oglądaj👍 Na wstępie wyraźnie zaznaczyliśmy, że nie będzie to czerstwe przechodzenie po ficzerach tylko opinia umotywowana doświadczeniem. Czekamy na twój materiał skoro masz takie doświadczenie na YT. Na pewno będzie warto.
@TurboBorsuk
@TurboBorsuk 8 месяцев назад
@@DevMentorsPL koledzy widzę doświadczenie zdobywali na Elektrodzie :)
@Hudypna
@Hudypna 8 месяцев назад
​​@@DevMentorsPLkomentarz na poziomie przedstawionego materiału, widać że Panowie nie potrafią odnieść się do uwag lub krytyki - słabo. Poza tym gdzie ktoś mówi o doświadczeniu na YT? Po co miałbym coś nagrywać? Doświadczenie mam w IT (nie przed kamerą), większe niż obaj Panowie razem wzięci, może dlatego nie atakuję tylko rozmawiam gdy ktoś zwraca mi na coś uwagę. Zabraliście się za nagrywanie i jutuby to chyba jesteście gotowi na komentarze wszelkiej maści, prawda? No cóż... "mentorzy" tak się nie zachowują. #unsub
@Hudypna
@Hudypna 8 месяцев назад
​@@TurboBorsukzłoto 😂
@nico-toscani
@nico-toscani 8 месяцев назад
+1
@Dacusx
@Dacusx 8 месяцев назад
Po przekroczeniu seniority, nie jest common sense żebyście zaczęli gadać po polsku? Tego się nie da oglądać. Mam nadzieję że będzie to taki way to go. Dla mnie to byłby gamechanger.
Далее
Jak kompleksowo testować Web API z infrastrukturą?
1:07:44
Dlaczego nie lubimy DZIEDZICZENIA?
1:40:40
Просмотров 6 тыс.
БИМ БАМ БУМ💥
00:14
Просмотров 4 млн
Mój problem z Domain-Driven Design...
33:14
Просмотров 10 тыс.
What Is .NET Aspire? The Insane Future of .NET!
18:35
Просмотров 265 тыс.
Writing async/await from scratch in C# with Stephen Toub
1:06:02
Dlaczego warto rozwijać PET PROJECT jako programista?
57:18
Don't Use Polly in .NET Directly. Use this instead!
14:58
cała prawda o STUDIACH INFORMATYCZNYCH
13:08
Просмотров 94 тыс.