Typy danych w C#: Double, Liczba całkowita, Float, Char

⚡ Inteligentne podsumowanie

Typy danych w języku C# definiują rodzaj wartości, jakie może przechowywać zmienna, od liczb całkowitych i zmiennoprzecinkowych po wartości logiczne i ciągi znaków, a także określają, ile pamięci rezerwuje każda zmienna podczas wykonywania programu.

  • 🔢 Typy całkowite: Słowo kluczowe Int32 (int) przechowuje liczby całkowite, takie jak 10, 20 lub 30, w ustalonym zakresie pamięci.
  • 🔣 Typy zmiennoprzecinkowe: Typy double i float przechowują wartości dziesiętne, natomiast decimal oferuje większą precyzję w obliczeniach finansowych.
  • Typ boolowski: Słowo kluczowe Boolean przechowuje tylko wartości prawda lub fałsz i steruje logiką warunkową.
  • 🔤 Typy tekstu: char przechowuje pojedynczy znak, a string przechowuje sekwencję znaków jako tekst.
  • 🧩 Wartość a odniesienie: Typy wartości przechowują dane bezpośrednio, natomiast typy referencyjne, takie jak ciągi znaków, przechowują adres pamięci.
  • 🤖 Pomoc AI: GitHub Copilot i ML.NET wprowadzają sugestie dotyczące kodu i uczenie maszynowe do obsługi typów w języku C#.

Typy danych w C#

Jakie są typy danych w języku C#?

Język C# zawiera zestaw podstawowych typów danych. Te typy danych służą do tworzenia wartości używanych w aplikacji. Przyjrzyjmy się podstawowym typom danych dostępnym w języku C#. W każdym przykładzie zmodyfikujemy tylko główną funkcję w naszym pliku Program.cs.

1) Liczba całkowita

Typy danych Integer są używane do pracy z liczbami. W tym przypadku liczby są liczbami całkowitymi, takimi jak 10, 20 lub 30. W C# typ danych jest oznaczony przez Słowo kluczowe Int32. Poniżej znajduje się przykład wykorzystania tego typu danych. W naszym przykładzie zdefiniujemy zmienną Int32 o nazwie num. Następnie przypiszemy do zmiennej wartość całkowitą i odpowiednio ją wyświetlimy.

Całkowite typy danych w 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 Wyjaśnienie:-

  1. Typ danych Int32 jest określony w celu zadeklarowania zmiennej typu Integer o nazwie num. Zmiennej zostaje wówczas przypisana wartość 30.
  2. Na koniec funkcja console.write służy do wyświetlania liczby na konsoli.

Jeżeli powyższy kod został wpisany poprawnie i program zostanie pomyślnie wykonany, wyświetlony zostanie poniższy komunikat.

Wyjście:

Całkowite typy danych w C#

Z wyników wyraźnie widać, że w konsoli wyświetlono zmienną typu Integer o nazwie num

2) Double

Typ danych double jest używany do pracy z liczbami dziesiętnymi. W tym przypadku liczby są liczbami całkowitymi, takimi jak 10.11, 20.22 lub 30.33. W C# typ danych jest oznaczony słowem kluczowym „Double„. Poniżej znajduje się przykład tego typu danych.

W naszym przykładzie zdefiniujemy zmienną typu double o nazwie num. Następnie przypiszemy Double wartość zmiennej, a następnie odpowiednio ją wyświetl.

Double Typy danych w 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 Wyjaśnienie:-

  1. Określono typ danych double, aby zadeklarować typ double zmienna zwany nr. Zmiennej zostaje wówczas przypisana wartość 30.33.
  2. Na koniec funkcja console.write służy do wyświetlania liczby na konsoli.

Jeżeli powyższy kod został wpisany poprawnie i program zostanie pomyślnie wykonany, wyświetlony zostanie poniższy komunikat.

Wyjście:

Double Typy danych w C#

Z wyników wyraźnie widać, że w konsoli wyświetlono zmienną typu double o nazwie num

3) Wartość logiczna

Do pracy z wartościami Boolean używany jest typ danych Boolean prawda i fałsz. W C# typ danych jest oznaczony słowem kluczowym Boolean. Poniżej znajduje się przykład tego typu danych, który można zastosować.

W naszym przykładzie zdefiniujemy zmienną logiczną o nazwie „status”. Następnie przypiszemy do zmiennej wartość logiczną i odpowiednio ją wyświetlimy.

Boolowskie typy danych w 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 Wyjaśnienie:-

  1. Typ danych boolowskich jest określony w celu zadeklarowania zmiennej logicznej zwanej „statusem”. Następnie zmiennej przypisuje się wartość prawda/fałsz.
  2. Na koniec funkcja console.write służy do wyświetlania wartości logicznej na konsoli.

Jeśli powyższy kod został wpisany poprawnie i program zostanie pomyślnie wykonany, zostanie wyświetlony wynik.

Wyjście:

Boolowskie typy danych w C#

Z wyników wyraźnie widać, że w konsoli wyświetlono zmienną logiczną równą true

4) Sznurek

Typ danych String służy do pracy z wartościami String. W języku C# typ danych jest oznaczony słowem kluczowym „String”. Poniżej znajduje się przykład tego typu danych.

W naszym przykładzie zdefiniujemy zmienną typu String o nazwie „wiadomość”. Następnie przypiszemy do zmiennej wartość String i odpowiednio ją wyświetlimy.

Typy danych ciągowych w 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 Wyjaśnienie:-

  1. Typ danych String jest określony w celu zadeklarowania zmiennej łańcuchowej zwanej komunikatem. Następnie zmiennej zostaje przypisana wartość „Hello”.
  2. Na koniec funkcja console.write służy do wyświetlania wartości ciągu w konsoli.

Jeśli powyższy kod został wpisany poprawnie i program zostanie pomyślnie wykonany, zostanie wyświetlony wynik.

Wyjście:

Typy danych ciągowych w C#

Z wyników wyraźnie widać, że w konsoli wyświetlono zmienną typu String o nazwie message

Pełna lista typów danych C#

Cztery powyższe przykłady obejmują najpopularniejsze typy, ale C# oferuje pełen zestaw wbudowanych typów danych wartości. Każdy typ rezerwuje stałą ilość pamięci i akceptuje określony zakres wartości, więc wybór najmniejszego typu, który bezpiecznie mieści się w danych, zapewnia wydajność programu.

DataType Rozmiar Zakres / Descriptjon
bajt 1 bajtów 0 do 255
krótki 2 bajtów -32,768 do 32,767
int (Int32) 4 bajtów -2,147,483,648 do 2,147,483,647
długie 8 bajtów Bardzo duże liczby całkowite (±9.2 kwintyliona)
unosić się 4 bajtów Liczby dziesiętne z dokładnością do około 6–7 cyfr
Podwójna 8 bajtów Liczby dziesiętne z dokładnością do około 15–16 cyfr
dziesiętny 16 bajtów Wysoka precyzja liczb dziesiętnych (28–29 cyfr) dla pieniędzy
zwęglać 2 bajtów Pojedynczy znak Unicode
bool 1 bajtów prawda czy fałsz

Oprócz typów wartości, typ ciągu jest najczęściej używanym typem referencyjnym i przechowuje sekwencję znaków dowolnej długości. Wybór odpowiedniego typu zapobiega błędom przepełnienia i niepotrzebnemu zużyciu pamięci.

Typy wartości a typy referencyjne w języku C#

Każdy typ danych w języku C# należy do jednej z dwóch grup: typów wartości i typów referencyjnych. To rozróżnienie kontroluje sposób, w jaki C# przechowuje dane oraz zachowanie zmiennej po jej skopiowaniu lub przekazaniu do metody.

  • Typy wartości: Przechowują one rzeczywiste dane bezpośrednio, zwykle na stosie. int, double, bool, char, wyliczanie, i struct to typy wartości. Przypisanie jednej zmiennej do drugiej kopiuje wartość, dzięki czemu obie zmienne pozostają niezależne.
  • Typy odniesień: Przechowują one referencję (adres pamięci) wskazującą na dane na stercie. Ciągi znaków, obiekty, tablice i instancje klas to typy referencyjne. Kopiowanie zmiennej referencyjnej kopiuje tylko adres, więc obie zmienne współdzielą ten sam obiekt.

Zmienna typu wartości nigdy nie może być null, ponieważ zawsze przechowuje wartość, podczas gdy niezainicjowany typ referencyjny domyślnie przyjmuje wartość null. Zrozumienie tej różnicy pomaga przewidzieć, jak zmiany danych przepływają przez program.

Konwersja typu w C#

Język C# często musi przenieść wartość z jednego typu danych do innego, na przykład zamieniając dane wprowadzane przez użytkownika, które zawsze są tekstem, na liczbę. Proces ten nazywa się konwersją typu i przebiega na trzy główne sposoby.

  • Konwersja niejawna: Kompilator konwertuje automatycznie, jeśli nie ma ryzyka utraty danych, np. przypisywania typu int do typu double. Nie jest wymagana żadna specjalna składnia.
  • Konwersja jawna (rzutowanie): Typ docelowy umieszczasz w nawiasach, np. (int)myDoubleRzutowanie może powodować utratę danych — konwersja typu double na int powoduje utratę części dziesiętnej — dlatego świadomie akceptujesz to ryzyko.
  • Metody pomocnicze: Klasa Convert (Convert.ToInt32) i metoda Parse każdego typu (int.Parse) zamieniają ciągi znaków na liczby, natomiast ToString zamienia wartości z powrotem na czytelny tekst.

Wybór właściwej konwersji zapewnia dokładność danych i zapobiega błędom wykonania, gdy typy po obu stronach zadania nie są zgodne.

FAQ

float, double i decimal przechowują liczby dziesiętne, ale różnią się precyzją i rozmiarem. float używa 4 bajtów zawierających około 7 cyfr, double używa 8 bajtów zawierających około 15 cyfr, a decimal używa 16 bajtów do przechowywania wartości finansowych o wysokiej precyzji.

Nie ma między nimi żadnej realnej różnicy. „int” to alias języka C# dla typu System.Int32 platformy .NET, więc „int” i „Int32” kompilują się do dokładnie tego samego. Większość programistów pisze „int” dla zwięzłości, podczas gdy „Int32” jawnie określa typ bazowy.

String jest typem referencyjnym, ponieważ przechowuje referencję do danych znakowych przechowywanych na stercie. Zachowuje się jednak jak typ wartościowy pod jednym względem: stringi są niezmienne, więc każda zmiana tworzy nowy obiekt stringa, zamiast edytować stary.

Typ dopuszczający wartość null pozwala typowi wartości, takiemu jak int lub bool, również na przyjęcie wartości null, zapisanej ze znakiem zapytania na końcu, na przykład int?. Jest to przydatne w przypadku opcjonalnych pól danych i baz danych, gdzie brakująca wartość musi być reprezentowana inaczej niż zero lub fałsz.

Typ char zawiera dokładnie jeden znak Unicode i jest ujmowany w cudzysłów, taki jak „A”. Typ string zawiera sekwencję zerową lub większą liczbę znaków i jest ujmowany w cudzysłów. Typ char jest typem wartości, a typ string jest typem referencyjnym.

Metoda var wnioskuje o typie zmiennej w czasie kompilacji, a następnie typ ten jest ustalany z pełną obsługą IntelliSense. Metoda dynamic odkłada sprawdzanie typu na czas wykonania, więc błędy typu pojawiają się dopiero podczas wykonywania. Metoda var zapewnia bezpieczeństwo, a metoda dynamiczna – elastyczność i późne wiązanie.

Tak. GitHub Copilot sugeruje deklaracje typów, konwersje i szablony w programie Visual Studio i Visual Studio CodeMoże zalecić odpowiedni typ liczbowy lub wygenerować kod parsujący, ale należy przejrzeć jego dane wyjściowe, ponieważ sugestie mogą nie uwzględniać problemów z precyzją lub przepełnieniem.

Tak. ML.NET mapuje typy danych C# na cechy modelu, używając typów numerycznych, takich jak float i double dla danych treningowych oraz string dla tekstu. Każda kolumna jest opisana przez silnie typizowane klasy danych, dzięki czemu modele uczenia maszynowego naturalnie integrują się z aplikacjami C#.

Podsumuj ten post następująco: