Languages
[Edit]
PL

C# - typy danych

7 points
Created by:
Marcino
720

W języku C# typy można podzielić w następujący sposób:

  1. typy wartościowe (value types)
  2. typy referencyjne (reference types)
  3. typy wskaźnikowe (poiner types)

Typy wartościowe

Są to typy, które w momencie utworzenia zmiennej alokują pamięć, gdzie przechowują przypisana wartość.

Typy proste można podzielić na 4 grupy: logiczne, numeryczne, znakowe.

Typ logiczny:

TypDomyślnieZakres/Opis
boolFalse

True lub False

Typ logiczny przechowujący wartość prawda lub fałsz.

bool value = true;

Console.WriteLine(value);  // True  // using System;

Typ znakowy:

TypDomyślnieZakres/Opis
char'\0'

od U+0000 do U+FFFF

16-bitowy typ znakowy (przechowujący znaki z tablicy Unicode).

char value = 'a';

Console.WriteLine(value);  // a  // using System;

Typ numeryczny zmienno-przecinkowy:

TypDomyślnieZakres/Opis
float0.0F

-3.4 × 10^38 do +3.4 × 10^38

32-bitowa wartość o pojedynczej prezycji (precyzja 7 cyfr; używany do obliczeń zmiennoprzecinkowych)

float value = 2.71f;

Console.WriteLine(value);  // 2.71  // using System;
double0.0D

±5.0 × 10^324 do ±1.7 × 10^308

64-bitowa wartość o podwójnej precyzji (precyzja 15-16 cyfr; używany do obliczeń zmiennoprzecinkowych)

double value = 3.14; // or 3.14d

Console.WriteLine(value);  // 2.71  // using System;
decimal0.0M

(-7.9 × 10^28 do 7.9 × 10^28) / (10^(0 do 28))

128-bitowa wartość dziesiętna (przecyzja 28-29 cyfr znaczących; używany do obliczeń finansowych, gdzie ważna jest precyzja obliczeń)

decimal value = 0.01m;

Console.WriteLine(value.ToString());  // 0.01  // using System;

Typ numeryczny całkowity (ze znakiem -/+):

TypDomyślnieZakres/Opis
long0L

od -9223372036854775808 do +9223372036854775807

64-bitowa liczba całkowita (dodanie i ujemne liczby)

long value = 1000000000L;

Console.WriteLine(value.ToString());  // 1000000000
int0

od -2147483648 do +2147483647

32-bitowa liczba całkowita (dodanie i ujemne liczby)

int value = 1000000;

Console.WriteLine(value.ToString());  // 1000000
short0

od -32768 do +32767

16-bitowa liczba całkowita (dodanie i ujemne liczby)

short value = 1000;

Console.WriteLine(value.ToString());  // 1000
sbyte0

od -128 do +127

8-bitowa liczba całkowita (dodanie i ujemne liczby)

sbyte value = 100;

Console.WriteLine(value.ToString());  // 100

Typ numeryczny całkowity (bez znaku):

TypDomyślnieZakres/Opis
ulong0L

od 0 do 18446744073709551615

64-bitowa liczba całkowita (tylko dodanie liczby)

ulong value = 1000000000L;

Console.WriteLine(value.ToString());  // 1000000000
uint0

od 0 do 4294967295

32-bitowa liczba całkowita (tylko dodanie liczby)

uint value = 1000000;

Console.WriteLine(value.ToString());  // 1000000
ushort0

od 0 do 65535

16-bitowa liczba całkowita (tylko dodanie liczby)

ushort value = 1000;

Console.WriteLine(value.ToString());  // 1000
byte0

od 0 do 255

8-bitowa liczba całkowita (tylko dodanie liczby)

byte value = 100;

Console.WriteLine(value.ToString());  // 100

Typy referencyjne

Są to typy, które nie przechowują rzeczywistych wartości w zmiennej, a przechowują referencje do obiektów.

Typy referencyjne można podzielić na 3 grupy: obiektowe, dynamiczne, łańcuchowe.

Typ obiektowy:

W C# wszystkie klasy dziedziczą niejawnie po klasie System.Object. Przypisanie do zmiennej obiektu powstałego z typu zdefiniowanego z użyciem class, spowoduje przypisanie referencji wskazującej na ten obiekt. 

using System;

public class Program
{
    public static void Main()
    {
        Student value = new Student();
    }
}
public class Student
{
    // Ciało klasy tutaj ...
}

Typ dynamiczny:

Sprawdzenie typów dla typów dynamicznych odbywa się w trakcie wykonywania programu.

Student value = new Student();

dynamic varible = value;

Typ łańcuchowy (typ String / string):

Pozwala przypisać dowolną wartość tekstową do naszej zmiennej. Możemy posługiwać się typem String lub jego aliasem string.

string variable = "Some text here ...";  // or String variable = ...

Typy wskaźnikowe

Są to typy, które przechowują w pamięci adres danego typu - czyli zmienna typu wskaźnikowego wskazuje na jakieś miejsce w pamięci. Aby móc używać takich typów, musimy włączyć ich obsługę w konfiguracji projektu oraz umieszczać taki kod w blokach unsafe.

int value = 10;

unsafe
{
    int* pointer = &value; // pobranie adresu zmiennej value i przypisanie go do wskaźnika 

    // jakieś dalsze operacje na wskaźnikach tutaj ...
}
Donate to Dirask
Our content is created by volunteers - like Wikipedia. If you think, the things we do are good, donate us. Thanks!
Join to our subscribers to be up to date with content, news and offers.
Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join