Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En la tabla siguiente se enumeran los tipos de valor integrados de C#:
| Palabra clave de tipo de C# | Tipo de .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 |
En la tabla siguiente se enumeran los tipos de referencia integrados de C#:
| Palabra clave de tipo de C# | Tipo de .NET |
|---|---|
object |
System.Object |
string |
System.String |
delegate |
System.Delegate |
dynamic |
System.Object |
En las tablas anteriores, la mayoría de las palabras clave de tipo de C# de la columna izquierda son alias para el tipo de .NET correspondiente. Son intercambiables. Por ejemplo, las declaraciones siguientes declaran variables del mismo tipo:
int a = 123;
System.Int32 b = 123;
El dynamic tipo es similar a object. Las principales diferencias son:
- Las operaciones de una
dynamicexpresión están enlazadas en tiempo de ejecución, no en tiempo de compilación. - No puede usar
new dynamic(). - No se puede derivar un tipo del
dynamictipo .
La delegate palabra clave es una palabra clave de tipo de referencia integrada que declara un tipo derivado de System.Delegate. A diferencia de las otras palabras clave de tipo integradas, delegate no es un alias para un tipo de .NET específico. En su lugar, declara tipos personalizados que derivan del tipo abstracto System.Delegate . Del mismo modo, dynamic representa el comportamiento del enlace en tiempo de ejecución en lugar de ser un alias directo para un tipo de .NET específico.
La void palabra clave representa la ausencia de un tipo. Se usa como el tipo de valor devuelto de un método que no devuelve un valor.
El lenguaje C# incluye reglas especializadas para los System.Span<T> tipos y System.ReadOnlySpan<T> . Estos tipos no se clasifican como tipos integrados, ya que no hay palabras clave de C# que correspondan a estos tipos. El lenguaje C# define conversiones implícitas de tipos de matriz y el tipo de cadena en Span<T> y ReadOnlySpan<T>. Estas conversiones integran Span tipos en escenarios de programación más naturales. Las conversiones siguientes se definen como conversiones implícitas de intervalo:
- De cualquier matriz unidimensional con tipo
Ede elemento aSystem.Span<E> - Desde cualquier matriz unidimensional con tipo
Ede elemento aSystem.ReadOnlySpan<U>, cuandoEtiene conversión de covarianza o una conversión de identidad aU - De
System.Span<E>aSystem.ReadOnlySpan<U>, cuandoEtiene una conversión de covarianza o una conversión de identidad aU - De
System.ReadOnlySpan<E>aSystem.ReadOnlySpan<U>, cuandoEtiene una conversión de covarianza o una conversión de identidad aU - De
stringaSystem.ReadOnlySpan<char>
El compilador nunca omite ninguna conversión definida por el usuario cuando existe una conversión de intervalo implícita aplicable. Las conversiones implícitas de intervalo se pueden aplicar al parámetro receptor de miembros de extensión. La palabra clave especifica el extension parámetro receiver en un miembro de extensión. El parámetro receiver es el primer parámetro de un método de extensión mediante el this modificador . Las conversiones implícitas de intervalo no se consideran para las conversiones de grupo de métodos.