Datové typy v C#: Double, Integer, Float, Char

⚡ Chytré shrnutí

Datové typy v jazyce C# definují typ hodnot, které může proměnná obsahovat, od celých čísel a čísel s plovoucí desetinnou čárkou až po booleovské a řetězcové hodnoty, a určují, kolik paměti si každá proměnná rezervuje během provádění programu.

  • 🔢 Celočíselné typy: Klíčové slovo Int32 (int) ukládá celá čísla, například 10, 20 nebo 30, v rámci pevně stanoveného rozsahu paměti.
  • 🔣 Typy s plovoucí desetinnou čárkou: Typy double a float obsahují desetinná čísla, zatímco decimal nabízí vyšší přesnost pro finanční výpočty.
  • ☑️ Booleovský typ: Klíčové slovo Boolean ukládá pouze hodnoty true nebo false a řídí podmíněnou logiku.
  • 🔤 Typy textu: Typ char obsahuje jeden znak a typ string ukládá posloupnost znaků jako text.
  • 🧩 Hodnota vs. reference: Hodnotové typy ukládají data přímo, zatímco referenční typy, jako například řetězec, ukládají paměťovou adresu.
  • 🤖 Asistence AI: GitHub Copilot a ML.NET přinášejí návrhy kódu a strojové učení do práce s typy v C#.

Datové typy v C#

Co jsou datové typy v C#?

Jazyk C# je dodáván se sadou základních datových typů. Tyto datové typy se používají k vytváření hodnot, které se používají v rámci aplikace. Pojďme prozkoumat základní datové typy dostupné v C#. Pro každý příklad upravíme pouze hlavní funkci v našem souboru Program.cs.

1) Celé číslo

Datové typy Integer se používají pro práci s čísly. V tomto případě jsou čísla celá čísla jako 10, 20 nebo 30. V C# je datový typ označen Klíčové slovo Int32. Níže je uveden příklad, jak lze tento datový typ použít. V našem příkladu definujeme proměnnou Int32 nazvanou num. Proměnné pak přiřadíme celočíselnou hodnotu a podle toho ji zobrazíme.

Celočíselné datové typy v C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   Int32 num=30;
   Console.Write(num);  
   
   Console.ReadKey();
  }
 }
}

Code Vysvětlení:-

  1. Datový typ Int32 je určen pro deklaraci proměnné typu Integer s názvem num. Proměnné je pak přiřazena hodnota 30.
  2. Nakonec se pro zobrazení čísla na konzoli použije funkce console.write.

Pokud je výše uvedený kód zadán správně a program je úspěšně spuštěn, zobrazí se následující výstup.

Výstup:

Celočíselné datové typy v C#

Z výstupu je jasně vidět, že v konzoli byla zobrazena proměnná Integer s názvem num

2) Double

Pro práci s desetinnými místy se používá datový typ double. V tomto případě jsou čísla celá čísla jako 10.11, 20.22 nebo 30.33. V C# je datový typ označen klíčovým slovem „Double“. Níže je uveden příklad tohoto datového typu.

V našem příkladu budeme definovat dvojitou proměnnou nazvanou num. Poté přiřadíme a Double hodnotu do proměnné a poté ji odpovídajícím způsobem zobrazit.

Double Datové typy v C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   double num=30.33;
   Console.Write(num); 
   
   Console.ReadKey();
  }
 }
}

Code Vysvětlení:-

  1. Datový typ double je určen pro deklaraci typu double proměnlivý s názvem num. Proměnné je pak přiřazena hodnota 30.33.
  2. Nakonec se pro zobrazení čísla na konzoli použije funkce console.write.

Pokud je výše uvedený kód zadán správně a program je úspěšně spuštěn, zobrazí se následující výstup.

Výstup:

Double Datové typy v C#

Z výstupu je jasně vidět, že v konzoli byla zobrazena dvojitá proměnná s názvem num

3) Boolean

Booleovský datový typ se používá pro práci s booleovskými hodnotami pravdivé a nepravdivé. V C# je datový typ označen klíčovým slovem Boolean. Níže je uveden příklad tohoto datového typu, který lze použít.

V našem příkladu definujeme booleovskou proměnnou nazvanou 'stav.' Proměnné pak přiřadíme booleovskou hodnotu a podle toho ji zobrazíme.

Booleovské datové typy v C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
  { 
   static void Main(string[] args) 
   {
    Boolean status=true;
    Console.Write(status);
    
    Console.ReadKey();
   }
  }
}

Code Vysvětlení:-

  1. Booleovský datový typ je určen k deklaraci booleovské proměnné s názvem 'stav'. Proměnné je pak přiřazena hodnota true/false.
  2. Nakonec je funkce console.write použita k zobrazení booleovské hodnoty do konzole.

Pokud je výše uvedený kód zadán správně a program je úspěšně spuštěn, zobrazí se výstup.

Výstup:

Booleovské datové typy v C#

Z výstupu můžete jasně vidět, že v konzole byla zobrazena proměnná Boolean, která se rovná true

4) Řetězec

Datový typ String se používá pro práci s hodnotami String. V C# je datový typ označen klíčovým slovem 'String'. Níže je uveden příklad tohoto datového typu.

V našem příkladu definujeme proměnnou String nazvanou 'zpráva'. Proměnné pak přiřadíme hodnotu String a podle toho ji zobrazíme.

Datové typy řetězců v C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class program
 {
  static void Main(string[] args)
  {
   String message="Hello";
   Console.Write(message);
   
   Console.ReadKey();
  }
 }
}

Code Vysvětlení:-

  1. Datový typ String je určen k deklaraci řetězcové proměnné s názvem message. Proměnné je pak přiřazena hodnota „Ahoj“.
  2. Nakonec je funkce console.write použita k zobrazení hodnoty řetězce na konzoli.

Pokud je výše uvedený kód zadán správně a program je úspěšně spuštěn, zobrazí se výstup.

Výstup:

Datové typy řetězců v C#

Z výstupu je jasně vidět, že se v konzoli zobrazila proměnná String s názvem message

Kompletní seznam datových typů C#

Čtyři výše uvedené příklady pokrývají nejběžnější typy, ale C# nabízí kompletní sadu vestavěných hodnotových datových typů. Každý typ si rezervuje pevně stanovené množství paměti a přijímá určitý rozsah hodnot, takže výběr nejmenšího typu, který bezpečně odpovídá vašim datům, udržuje program efektivní.

Datový typ Velikost Rozsah / Description
byte 1 bajtů 0 255 na
krátký 2 bytů -32,768 na 32,767
celé číslo (Int32) 4 bytů -2,147,483,648 na 2,147,483,647
dlouhý 8 bytů Velmi velká celá čísla (±9.2 kvintilionů)
vznášet se 4 bytů Desetinná čísla s přesností zhruba 6–7 číslic
zdvojnásobit 8 bytů Desetinná čísla s přesností zhruba 15–16 číslic
desetinný 16 bytů Vysoce přesná desetinná čísla (28–29 číslic) pro peníze
spálit 2 bytů Jeden znak Unicode
bool 1 bajtů pravda nebo lež

Vedle těchto hodnotových typů je typ řetězec nejpoužívanějším referenčním typem a ukládá posloupnost znaků libovolné délky. Výběr vhodného typu zabraňuje chybám přetečení a zbytečnému využití paměti.

Typy hodnot vs. referenční typy v C#

Každý datový typ v jazyce C# spadá do jedné ze dvou skupin: hodnotové typy a referenční typy. Toto rozlišení určuje, jak jazyk C# ukládá data a jak se proměnná chová při jejím kopírování nebo předávání metodě.

  • Typy hodnot: Tyto ukládají skutečná data přímo, obvykle na zásobník. int, double, bool, char, výčetTypy , a struct jsou hodnoty. Přiřazení jedné proměnné druhé zkopíruje hodnotu, takže obě proměnné zůstanou nezávislé.
  • Typy referencí: Tyto ukládají odkaz (adresu paměti), který ukazuje na data v haldě. Řetězec, objekt, pole a instance tříd jsou referenční typy. Kopírováním referenční proměnné se kopíruje pouze adresa, takže obě proměnné sdílejí stejný objekt.

Proměnná hodnotového typu nemůže být nikdy null, protože vždy obsahuje hodnotu, zatímco neinicializovaný referenční typ má výchozí hodnotu null. Pochopení tohoto rozdílu vám pomůže předpovědět, jak změny v datech probíhají programem.

Konverze typů v C#

Jazyk C# často potřebuje přesunout hodnotu z jednoho datového typu do jiného, ​​například převést uživatelský vstup, kterým je vždy text, na číslo. Tento proces se nazývá konverze typů a probíhá třemi hlavními způsoby.

  • Implicitní konverze: Kompilátor provádí automatickou konverzi, pokud nehrozí riziko ztráty dat, například při přiřazení typu int k typu double. Není vyžadována žádná speciální syntaxe.
  • Explicitní konverze (casting): Cílový typ umístíte do závorek, například (int)myDoublePřetypování může vést ke ztrátě dat – převod typu double na int ztrácí desetinnou část – takže toto riziko podstupujete záměrně.
  • Pomocné metody: Třída Convert (Convert.ToInt32) a metoda Parse každého typu (int.Parse) převádějí řetězce na čísla, zatímco ToString převádí hodnoty zpět na čitelný text.

Výběr správné konverze udržuje data přesná a zabraňuje chybám za běhu, když se typy na obou stranách přiřazení neshodují.

Nejčastější dotazy

Typy float, double a decimal ukládají desetinná čísla, ale liší se přesností a velikostí. Typ float používá 4 bajty s přibližně 7 číslicemi, typ double používá 8 bajtů s přibližně 15 číslicemi a typ decimal používá 16 bajtů pro vysoce přesné finanční hodnoty.

Není mezi tím žádný skutečný rozdíl. int je alias v C# pro typ .NET System.Int32, takže int a Int32 se kompilují do úplně stejného výsledku. Většina vývojářů píše int pro stručnost, zatímco Int32 explicitně definuje základní typ frameworku.

Typ typu string je referenční typ, protože ukládá odkaz na znaková data uložená v haldě. V jednom ohledu se však chová jako hodnotový typ: řetězce jsou neměnné, takže každá změna vytvoří nový objekt typu string, nikoli úpravu starého.

Typ s povolenou hodnotou Null umožňuje hodnotovému typu, jako je int nebo bool, obsahovat také hodnotu null, zapsanou s koncovým otazníkem, například int?. Je užitečný pro volitelná datová a databázová pole, kde chybějící hodnota musí být reprezentována odlišně od nuly nebo false.

Typ char obsahuje přesně jeden znak Unicode a používá jednoduché uvozovky, například 'A'. Řetězec obsahuje posloupnost nula nebo více znaků a používá dvojité uvozovky. Typ char je hodnotový typ, zatímco řetězec je referenční typ.

Var odvodí typ proměnné při kompilaci a tento typ je následně opraven s plnou podporou IntelliSense. dynamic odkládá kontrolu typů na běhové prostředí, takže chyby typu se objevují pouze během provádění. Var použijte pro bezpečnost a dynamic pro flexibilní scénáře s pozdní vazbou.

Ano. GitHub Copilot navrhuje deklarace typů, konverze a standardizované šablony v rámci Visual Studia a Visual Studio CodeMůže doporučit vhodný číselný typ nebo vygenerovat kód pro analýzu, ale měli byste si jeho výstup prohlédnout, protože návrhy mohou přehlédnout problémy s přesností nebo přetečením.

Ano. ML.NET mapuje datové typy C# na modelové funkce pomocí číselných typů, jako jsou float a double pro trénovací data a string pro text. Silně typované datové třídy popisují každý sloupec, takže modely strojového učení se přirozeně integrují do aplikací C#.

Shrňte tento příspěvek takto: