C# > Core C# > Variables and Data Types > Type Inference with var
Implicitly Typed Local Variables with 'var'
This snippet demonstrates how to use the var keyword in C# to declare variables with implicitly inferred types. var allows the compiler to determine the variable's type based on the expression used to initialize it. This can simplify code and improve readability in many cases. However, it's important to understand the limitations and best practices associated with using var.
Basic Usage of 'var'
The var keyword instructs the compiler to infer the type of the variable based on the initializer. In the code above, message is inferred to be a string, number is inferred to be an int, and pi is inferred to be a double. The compiler performs this inference at compile time, and the variable behaves exactly as if its type was explicitly declared.
var message = "Hello, World!"; // Compiler infers string type
var number = 42; // Compiler infers int type
var pi = 3.14159; // Compiler infers double type
Console.WriteLine(message);
Console.WriteLine(number);
Console.WriteLine(pi);
Concepts Behind the Snippet
Type inference is a feature where the compiler automatically deduces the data type of a variable without requiring the programmer to explicitly declare it. The var keyword enables this functionality in C#. The type is determined at compile time, so there is no runtime overhead associated with using var. The inferred type becomes fixed after compilation.
Real-Life Use Case
Using var is particularly useful when working with complex types or when the type is obvious from the initialization. For example, when iterating over a collection, using var simplifies the code while maintaining clarity. The example shows that iterating over a List is simpler if using var, and more readable.
var customers = new List<string> {"Alice", "Bob", "Charlie"};
foreach (var customer in customers)
{
Console.WriteLine("Customer: " + customer);
}
Best Practices
var when the type is obvious from the initialization.var when the type is not immediately clear, as it can reduce code readability.var can only be used for local variables; it cannot be used for class fields or method parameters.var requires initialization; you cannot declare a var variable without assigning a value.
Interview Tip
Be prepared to discuss the advantages and disadvantages of using var. Understand that var does not mean 'variant' or 'dynamic'. The type is still statically determined at compile time. Also, know when it is appropriate and not appropriate to use var to maintain code readability.
When to Use Them
Use var when:
Avoid var when:
Memory Footprint
The memory footprint of a variable declared with var is the same as if the type was explicitly declared. Type inference occurs at compile time, so the compiler determines the appropriate data type and allocates memory accordingly. There is no runtime overhead or difference in memory usage.
Alternatives
The alternative to using var is to explicitly declare the type of the variable, such as string message = "Hello, World!";. Explicit typing can enhance code readability, especially when the type is not immediately obvious from the initialization.
Pros
Cons
FAQ
-
Can I use
varfor class-level fields?
No,varcan only be used for local variables declared within methods or blocks. -
Does
varmake my code dynamically typed?
No,varresults in statically typed code. The type is inferred at compile time and cannot change at runtime. -
What happens if I don't initialize a
varvariable?
You will get a compile-time error.varrequires initialization during declaration.