Las variables tipificadas implícitamente 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).
Pregunta: ¿Por qué se denomina Local?
Respuesta: No está permitido usar var como valor de parámetro o tipo de devolución en el método o definirlo a nivel de clase, etc. porque el alcance de la variable tipificada implícitamente es local .
Ejemplo:
// C# program to illustrate // implicitly typed local variable using System; public class GFG { // declaring and initializing implicitly // typed local variable at class level. // It will give compile time error var imp = 15; // Main method static public void Main() { // trying to print the value of 'imp' Console.WriteLine(GFG.imp); } }
Error de tiempo de compilación:
prog.cs(10,2): error CS0825: la palabra clave contextual `var’ solo puede aparecer dentro de una declaración de variable local
Puntos importantes:
- Las variables tipificadas implícitamente generalmente se declaran usando la palabra clave var como se muestra a continuación:
var ivariable = 10;
- En las variables escritas implícitamente, no se le permite declarar múltiples var en una sola declaración como se muestra a continuación:
var ivalue = 20, a = 30; // invalid
- No está permitido usar var como tipo de campo en el nivel de clase.
- Está permitido usar la expresión en var como:
Var b-=39
- En C#, no se puede declarar una variable tipificada implícitamente sin ninguna inicialización como:
var ivalue; // invalid
- No está permitido usar un valor nulo en una variable escrita implícitamente como:
var value = null; // invalid
- El inicializador no puede contener ningún objeto o colección, puede contener una nueva expresión que incluya un inicializador de objeto o colección como:
// Not allowed var data = { 23, 24, 10}; // Allowed var data = new int [] {23, 34, 455, 65};
- No está permitido inicializar una variable escrita implícitamente con diferentes tipos más de un tipo como:
// It will give error because // the type of the value is different // one is of string type and another // one is of int type var value = "sd" value = new int[]{1, 2, };
Ejemplo 1:
// C# program to illustrate the // concept of implicitly typed variable using System; public class GFG { // Main method static public void Main() { // Declaring and initializing // implicitly typed variables var a = 50; var b = "Welcome! Geeks"; var c = 340.67d; var d = false; // Display the type of the variables 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()); } }
Type of 'a' is : System.Int32 Type of 'b' is : System.String Type of 'c' is : System.Double Type of 'd' is : System.Boolean
Ejemplo 2:
// C# program to illustrate the // use of implicitly typed variable using System; class GFG { // Main method static public void Main() { // implicitly typed variables var Base = 13; var Height = 20; var Area = (Base * Height) / 2; // Display result Console.WriteLine("Height of triangle is: " + Height + "\nBase of the triangle is: " + Base); Console.Write("Area of the triangle is: {0}", Area); } }
Height of triangle is: 20 Base of the triangle is: 13 Area of the triangle is: 130
Nota: Las variables locales escritas implícitamente se pueden usar como una variable local en una función, en foreach y for loop, como un tipo anónimo, en la expresión de consulta LINQ, en la declaración de uso, etc.
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