Category Archives: .NET Framework

Nullable Reference Types [Jiří Kanda, HAVIT Vzdělávací okénko, 24.10.2019]

Záznam ze Vzdělávacího okénka HAVIT z 24. října 2019, kde Jiří Kanda povídal o nullable reference types v C# 8.0 a jejich využitelnosti na našich projektech.

Nahrávka je publikována na našem HAVIT YouTube Channelu.

C# – Přehled konstrukcí pro začátečníky 1

Základní struktura (konzolové) aplikace

using System;

namespace ConsoleApp
{
	class Program
	{
		static void Main(string[] args)				// metoda, která se spustí po startu aplikace
		{
			Console.WriteLine("Hello World!");		// výpis textu na obrazovku 
		}
	}
}

Práce s konzolí – vstup, výstup

Console.Write("Blah, blah.");				// výpis textu bez odřádkování
Console.WriteLine("Hello World!");			// výpis textu s odřádkováním
string s1 = Console.ReadLine();				// přečtení řádku do proměnné s1
Console.WriteLine($"Ahoj {s1}, vítám tě!");	// skládání textu s proměnnými pomocí $

Proměnné, datové typy a jejich konverze

string text = "Můj text";       // text
char c = 'a';                   // znak
int i = 10;                     // celé číslo (Int32)
decimal d = 10.20m;             // desetinné číslo
double dbl = 3.14159;           // číslo s plovoucí desetinnou čárkou
bool b = true;                  // logická hodnota - pravda / nepravda
var x = 10;                     // zkrácený zápis, typ proměnné je automaticky odvozen
int i2 = Convert.ToInt32(text); // Convert zařídí konverzi mezi základními typy 

Aritmetické operace, matematika

i = 1 + 10;
i = 10 - 1;
i = 10 / 2;		// dělení
i = 10 * 20;    // násobení
i = 11 % 7;     // zbytek po celočíselném dělení (= 4)
i++;            // přičte jedničku
i--;            // odečte jedničku

// Math = matematické funkce
i = Math.Abs(-10);      // absolutní hodnota (10)
d = Math.Round(1.25);   // zaokrouhlední (1)
d = Math.Pow(2, 4);     // mocnina (16)
i = Math.Min(1, 5);		// minumum (Max je maximum)

Podmínka, přepínač

if (i == 10)
{
	// podmínka splněna
}
else
{
	// podmínka nesplněna
}

switch (i)
{
	case 1:
		// i je 1
		break;
	case 2:
	case 3:
		// i je 2´nebo 3
		break;
	default:
		// v ostatních případech
		break;
}

Porovnávání, logické operace do podmínek

if (a == b)						// rovnají se
if (a != b)						// nerovnají se
if (a < b)						// menší než
if (a <= b)                     // menší nebo rovno

if ((a == 1) && (b == 2))		// a zároveň (AND)
if ((a == 1) || (b == 2))		// nebo (OR)
if (!(a == 1))					// negace (NOT)

Cykly

for (int i = 0; i < 10; i++)
{
	// opakuj 10x
}

while (i < 10)
{
	// opakuj, dokud je podmínka splněna
}

do
{
	// opakuj  (alespoň jednou), dokud je podmínka splněna
}
while (i < 10);

Vytvoření vlastní metody

static void Main(string[] args)
{
	int vysledek = Spocti(10, 15);	// vysledek bude 40
}

static int Spocti(int a, int b)     // void, pokud žádný výsledek nevracíme
{
	int c = a + 2 * b;
	return c;
}

[ASP].NET [Core] Performance Tuning – záznam, slides, dema [WUG Days Brno, 14.9.2019]

Záznam z mé přednášky pro konferenci WUG Days Brno ze 14. září 2019, kde jsem ukazoval pár performance tipů z praxe:

  • String Concatenation
  • StringBuilder Capacity Preinitialization
  • Collection Capacity Preinitialization
  • Substring as Span
  • String Concat Consolidation
  • Search In Collection
  • Dictionary Pickup Redundant Checks
  • Dictionary Remove Redundant Checks
  • Collection Empty Check
  • Redundant Casting
  • Boxing Unboxing
  • Caching
  • Finalization
  • Exception Handling (Try Catch)
  • Reflection
  • Reflection – Layout Trick

Slides a dema:

Nahrávka je publikována na našem HAVIT YouTube Channelu.

Jak se zbavit českých exception messages?

Možná vás stejně jako mě nepotěší české hlášky .NET (přestože máte anglická Windows):

V aplikaci / došlo k chybě serveru.
Odkaz na objekt není nastaven na instanci objektu.
Popis: Při provádění aktuálního webového požadavku došlo k neošetřené výjimce. Další informace o chybě a o jejím původu v kódu naleznete v trasování zásobníku.

Podrobnosti o výjimce: System.NullReferenceException: Odkaz na objekt není nastaven na instanci objektu.

Zdrojová chyba:

Zpravidla je to o souhře dvou okolností:

  1. Thread.CurrentThread.Current[UI]Culture máte nastaveno na cs-cz.
  2. Máte na počítači český language pack.

Prvního nastavení se při vývoji aplikace obecně zbavit nechcete. Prostě chcete, aby se zobrazovaly aplikační resources (.resx) české a používala česká globalizace (formátování čísel, data, řazení, …).

Druhé podmínky se dá však zbavit – český language pack odinstalovat.

Dříve se jednalo o samostatnou instalaci pro .NET, kterou jste mohli najít v Programs & Features ve Windows, dneska je to zpravidla Windows 10 Language Pack, který v sobě české texty chybových hlášek obsahuje.

Language Pack nejrychleji pošlete do věčných lovišť z příkazové řádky:

lpksetup /u

…potřebujete se dostat do čistého stavu:

2019-06-27_17-29-34

 

.NET [Core] Memory Internals – záznam, slides a dema [TechEd DevCon Praha 2019]

Záznam z přednášky pro konferenci TechEd DevCon Praha ze 16. května 2019.

C# 8.0, Visual Studio a .NET vNext – záznam, slides a dema [TechEd DevCon Praha 2019]

Záznam z přednášky pro konferenci TechEd DevCon Praha ze 14. května 2019.