Udostępnij za pomocą


Typy wbudowane (odwołanie w C#)

W poniższej tabeli wymieniono wbudowane typy wartości języka C#:

Słowo kluczowe typu C# Typ platformy .NET
bool System.Boolean
byte System.Byte
sbyte System.SByte
char System.Char
decimal System.Decimal
double System.Double
float System.Single
int System.Int32
uint System.UInt32
nint System.IntPtr
nuint System.UIntPtr
long System.Int64
ulong System.UInt64
short System.Int16
ushort System.UInt16

W poniższej tabeli wymieniono wbudowane typy referencyjne języka C#:

Słowo kluczowe typu C# Typ platformy .NET
object System.Object
string System.String
delegate System.Delegate
dynamic System.Object

W poprzednich tabelach większość słów kluczowych typu C# z lewej kolumny to aliasy odpowiadającego mu typu .NET. Są one zamienne. Na przykład następujące deklaracje deklarują zmienne tego samego typu:

int a = 123;
System.Int32 b = 123;

Typ dynamic jest podobny do object. Główne różnice są następujące:

  • Operacje na wyrażeniu dynamic są powiązane w czasie wykonywania, a nie w czasie kompilacji.
  • Nie można użyć new dynamic().
  • Nie można utworzyć typu na podstawie dynamic typu.

Słowo delegate kluczowe to wbudowane słowo kluczowe typu odwołania, które deklaruje typ pochodzący z System.Delegateklasy . W przeciwieństwie do innych wbudowanych słów kluczowych typu, delegate nie jest aliasem dla określonego typu platformy .NET. Zamiast tego deklaruje typy niestandardowe pochodzące z typu abstrakcyjnego System.Delegate . Podobnie reprezentuje zachowanie powiązania środowiska uruchomieniowego, dynamic a nie jest bezpośrednim aliasem dla określonego typu platformy .NET.

Słowo void kluczowe reprezentuje brak typu. Jest on używany jako zwracany typ metody, która nie zwraca wartości.

Język C# zawiera wyspecjalizowane reguły dla System.Span<T> typów i System.ReadOnlySpan<T> . Te typy nie są klasyfikowane jako typy wbudowane, ponieważ nie ma słów kluczowych języka C#, które odpowiadają tym typom. Język C# definiuje niejawne konwersje z typów tablic i typu ciągu na Span<T> i ReadOnlySpan<T>. Te konwersje integrują Span typy z bardziej naturalnymi scenariuszami programowania. Następujące konwersje są definiowane jako niejawne konwersje zakresu:

  • Z dowolnej tablicy jednowymiarowej z typem E elementu do System.Span<E>
  • Z dowolnej tablicy jednowymiarowej z typem E elementu do System.ReadOnlySpan<U>, w przypadku E konwersji wariancji lub konwersji tożsamości na U
  • Od System.Span<E> do System.ReadOnlySpan<U>, w przypadku E konwersji kowariancji lub konwersji tożsamości na U
  • Od System.ReadOnlySpan<E> do System.ReadOnlySpan<U>, w przypadku E konwersji kowariancji lub konwersji tożsamości na U
  • Z string do System.ReadOnlySpan<char>

Kompilator nigdy nie ignoruje żadnej konwersji zdefiniowanej przez użytkownika, jeśli istnieje odpowiednia niejawna konwersja zakresu . Niejawne konwersje zakresu można zastosować do parametru odbiornika składowych rozszerzeń. Parametr odbiornika jest określany przez extension słowo kluczowe w elemencie członkowskim rozszerzenia. Parametr odbiornika jest pierwszym parametrem metody rozszerzenia przy użyciu this modyfikatora. Niejawne konwersje zakresu nie są brane pod uwagę w przypadku konwersji grup metod.

Zobacz także