Variables locales tipificadas implícitamente: var son aquellas variables que se declaran sin especificar el tipo .NET explícitamente. En la variable tipificada implícitamente, el compilador deduce automáticamente el tipo de la variable en el momento de la compilación a partir del valor utilizado para inicializar la variable. El concepto de variable implícitamente tipada se introduce en C# 3.0 . La variable escrita implícitamente no está diseñada para reemplazar la declaración de variable normal, está diseñada para manejar alguna situación de caso especial como LINQ (consulta integrada en el lenguaje).
Ejemplo:
// C# program to illustrate the concept // of the implicitly typed variable using System; class GFG { // Main method static public void Main() { // Creating and initializing // implicitly typed variables // Using var keyword var a = 'f'; var b = "GeeksforGeeks"; var c = 30.67d; var d = false; var e = 54544; // Display the type Console.WriteLine("Type of 'a' is : {0} ", a.GetType()); Console.WriteLine("Type of 'b' is : {0} ", b.GetType()); Console.WriteLine("Type of 'c' is : {0} ", c.GetType()); Console.WriteLine("Type of 'd' is : {0} ", d.GetType()); Console.WriteLine("Type of 'e' is : {0} ", e.GetType()); } }
Producción:
Type of 'a' is : System.Char Type of 'b' is : System.String Type of 'c' is : System.Double Type of 'd' is : System.Boolean Type of 'e' is : System.Int32
En C# 4.0 , se introduce un nuevo tipo que se conoce como tipo dinámico . Se utiliza para evitar la verificación de tipos en tiempo de compilación. El compilador no verifica el tipo de la variable de tipo dinámico en el momento de la compilación; en lugar de esto, el compilador obtiene el tipo en el momento de la ejecución. La variable de tipo dinámico se crea usando una palabra clave dinámica.
Ejemplo:
// C# program to illustrate how to get the // actual type of the dynamic type variable using System; class GFG { // Main Method static public void Main() { // Dynamic variables dynamic val1 = "GeeksforGeeks"; dynamic val2 = 3234; dynamic val3 = 32.55; dynamic val4 = true; // Get the actual type of // dynamic variables // Using GetType() method Console.WriteLine("Get the actual type of val1: {0}", val1.GetType().ToString()); Console.WriteLine("Get the actual type of val2: {0}", val2.GetType().ToString()); Console.WriteLine("Get the actual type of val3: {0}", val3.GetType().ToString()); Console.WriteLine("Get the actual type of val4: {0}", val4.GetType().ToString()); } }
Producción:
Get the actual type of val1: System.String Get the actual type of val2: System.Int32 Get the actual type of val3: System.Double Get the actual type of val4: System.Boolean
A continuación, se muestran algunas diferencias entre var y la palabra clave dinámica en C#:
Var | Dinámica |
---|---|
Se introduce en C# 3.0. | Se introduce en C# 4.0 |
Las variables que se declaran usando la palabra clave var se escriben estáticamente. | Las variables se declaran usando la palabra clave dinámica y se escriben dinámicamente. |
El compilador decide el tipo de variable en el momento de la compilación. | El compilador decide el tipo de variable en tiempo de ejecución. |
La variable de este tipo debe inicializarse en el momento de la declaración. De modo que el compilador decidirá el tipo de la variable según el valor que inicializó. | La variable de este tipo no necesita inicializarse en el momento de la declaración. Porque el compilador no conoce el tipo de la variable en tiempo de compilación. |
Si la variable no se inicializa arroja un error. | Si la variable no se inicializa, no arrojará un error. |
Es compatible con intelliSense en Visual Studio. | No es compatible con intelliSense en Visual Studio |
var mivalor = 10; // declaración 1 myvalue = «GeeksforGeeks»; // declaración 2 Aquí el compilador arrojará un error porque el compilador ya ha decidido el tipo de la variable myvalue usando la declaración 1 que es un tipo entero. Cuando intenta asignar una string a la variable myvalue, el compilador dará un error porque viola el tipo de regla de seguridad. |
myvalue dinámico = 10; // declaración 1 myvalue = «GeeksforGeeks»; // declaración 2 Aquí, el compilador no arrojará un error aunque el tipo de myvalue sea un número entero. Cuando asigna una string a myvalue, recrea el tipo de myvalue y acepta la string sin ningún error. |
No se puede usar para propiedades o devolver valores de la función. Solo se puede usar como una variable local en función. | Se puede usar para propiedades o devolver valores de la función. |
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA