Requisito previo: Tipos de datos de C#
La conversión de tipo ocurre cuando asignamos el valor de un tipo de datos a otro. Si los tipos de datos son compatibles, C# realiza la conversión automática de tipos . Si no son comparables, deben convertirse explícitamente, lo que se conoce como conversión de tipo explícito . Por ejemplo, asignar un valor int a una variable larga.
Casting implícito de tipos / Conversión automática de tipos
Sucede cuando:
- Los dos tipos de datos son compatibles.
- Cuando asignamos el valor de un tipo de datos más pequeño a un tipo de datos más grande.
Por ejemplo, en C#, los tipos de datos numéricos son compatibles entre sí, pero no se admite la conversión automática de tipo numérico a char o booleano. Además, char y boolean no son compatibles entre sí. Antes de convertir, el compilador primero verifica la compatibilidad de acuerdo con la siguiente figura y luego decide si está bien o si hay algún error.
La siguiente tabla muestra los tipos implícitos de conversión que admite C#:
Convertir desde tipo de datos | Convertir a tipo de datos |
---|---|
byte | corto, int, largo, flotante, doble |
corto | int, largo, flotante, doble |
En t | largo, flotante, doble |
largo | flotador, doble |
flotar | doble |
Ejemplo :
// C# program to demonstrate the // Implicit Type Conversion using System; namespace Casting{ class GFG { // Main Method public static void Main(String []args) { int i = 57; // automatic type conversion long l = i; // automatic type conversion float f = l; // Display Result Console.WriteLine("Int value " +i); Console.WriteLine("Long value " +l); Console.WriteLine("Float value " +f); } } }
Int value 57 Long value 57 Float value 57
Casting de tipo explícito
Puede haber un error de compilación cuando los tipos no son compatibles entre sí. Por ejemplo, asignando valor doble al tipo de datos int:
// C# program to illustrate incompatible data // type for explicit type conversion using System; namespace Casting{ class GFG { // Main Method public static void Main(String []args) { double d = 765.12; // Incompatible Data Type int i = d; // Display Result Console.WriteLine("Value of i is ", +i); } } }
Error :
prog.cs(14,21): error CS0266: Cannot implicitly convert type `double' to `int'. An explicit conversion exists (are you missing a cast?)
Entonces, si queremos asignar un valor de tipo de datos más grande a un tipo de datos más pequeño, realizamos una conversión de tipos explícita.
- Esto es útil para tipos de datos incompatibles donde no se puede realizar la conversión automática.
- Aquí, target-type especifica el tipo deseado para convertir el valor especificado.
- A veces, puede resultar en la conversión con pérdida.
Ejemplo :
// C# program to demonstrate the // Explicit Type Conversion using System; namespace Casting{ class GFG { // Main Method public static void Main(String []args) { double d = 765.12; // Explicit Type Casting int i = (int)d; // Display Result Console.WriteLine("Value of i is " +i); } } }
Value of i is 765
Explicación:
aquí, debido a la conversión con pérdida, el valor de i se convierte en 765 y hay una pérdida de valor de 0,12.
C# proporciona métodos integrados para conversiones de tipos de la siguiente manera:
Método | Descripción |
---|---|
abooleano | Convierte un tipo a valor booleano |
ToChar | Convierte un tipo en un valor de carácter. |
a byte | Convertirá un valor a Byte Value |
ADecimal | Convertirá un valor en valor de punto decimal |
Para duplicar | Convierte un tipo a tipo de datos doble |
ToInt16 | Convierte un tipo a entero de 16 bits |
ToInt32 | Convierte un tipo a entero de 32 bits |
ToInt64 | Convierte un tipo a entero de 64 bits |
Enstringr | Convertirá un tipo dado en una string. |
ToUInt16 | Convierte un tipo en un entero de 16 bits sin firmar |
ToUInt32 | Convierte un tipo en un entero de 32 bits sin signo |
ToUInt64 | Convierte un tipo en un entero de 64 bits sin firmar |
Ejemplo :
// C# program to demonstrate the // Built- In Type Conversion Methods using System; namespace Casting{ class GFG { // Main Method public static void Main(String []args) { int i = 12; double d = 765.12; float f = 56.123F; // Using Built- In Type Conversion // Methods & Displaying Result Console.WriteLine(Convert.ToString(f)); Console.WriteLine(Convert.ToInt32(d)); Console.WriteLine(Convert.ToUInt32(f)); Console.WriteLine(Convert.ToDouble(i)); Console.WriteLine("GeeksforGeeks"); } } }
56.123 765 56 12 GeeksforGeeks
Publicación traducida automáticamente
Artículo escrito por keshav_786 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA