C# je univerzální imperativní procedurální objektový reflexivní staticky typovaný jazyk s unifikovaným systémem typů. To vám teoreticky říká vše, co o něm potřebujete vědět. Ale co to znamená? A je to po dvaceti letech vývoje vlastně ještě vůbec pravda?

Dnešní C# (verze 9.0) je univerzální multiparadigmatický jazyk, který se od svých počátků výrazně změnil. Když začnu psát kód plný lambda expression a pattern matchingu, značná část C# programátorů na mne nevěřícně zírá. Vypadá to jako když se splaší psací stroj a nevěří, že se to byť jenom zkompiluje, natož aby to něco dělalo.

Proto jsem se rozhodl udělat seriál o C# pro mírně pokročilé. Jeho cílovou skupinou jsou lidé, kteří v C# programují, ale delší dobu neměli čas se mu nějak systematicky věnovat. Jednotlivé díly popisují, co do C# postupně přibývalo a jak se rozšiřují naše možnosti. Předpokládám, že mnoho z toho, o čem budu mluvit, již znáte, ale že můj výklad vás přesto naučí něco nového a umožní vám vaše znalosti uvést do kontextu a téma hlouběji pochopit.

Pokud jste začátečníci a chcete se naučit C#, toto nejsou videa pro vás. Ale můžete se podívat na seriál Petra Voborníka, který je určen právě pro začátečníky a vykládá C# od základů.

Dnes jsem zveřejnil úvodní díl, další budou následovat každý čtvrtek v týdenních intervalech:

  1. Generické typy se objevily už v C# 2.0, ale od té doby se dále rozvinuly. Řeč bude i o generických constraintech a jejich využítí.
  2. Od delegátů od lambda expressions a LINQ je demo, které předvádím skoro na každém svém školení. Snažím se z "lambda expressions" strhnout závoj tajemna a ukázat, jak se vlastně vyvinuli a co je vlastně ten slavný LINQ.
  3. Vlastnosti vlastností jsou oblast, ve které se C# za léta hodně změnilo a zjednodušilo, přibyla spousta syntaktického cukru.
  4. Rozšiřitelnost tříd pomocí dědičnosti je základní vlastnost všech objektově orientovaných jazyků. C# ale umí i jiné věci, parciální metody a extension metody.
  5. Miliardová chyba jménem null se bude věnovat hodnotě null. Povíme si o hodnotových a referenčních typech, speciálních operátorech pro práci s null a o tom, jak se současný C# snaží vyvarovat nepopulární NullReferenceException za běhu.
  6. Argumenty metod za dvacet let existence doznaly značných vylepšení. Od pojmenovaných a volitelných argumentů přes caller info atributy po discards a readonly references.
  7. Formátování řetězců je zajímavé a podceňované téma, od jednoduchého escapingu po stringovou interpolaci, s přesahem do internacionalizace a významu rozhraní IFormattable.

Všechny díly postupně najdete v tomto playlistu.