Skip to main content

C# Variables

Introduction

Variables are fundamental building blocks in any programming language, including C#. They act as containers that store data in a program's memory, allowing you to save, retrieve, and manipulate information while your application runs. In C#, variables are strongly typed, which means that each variable has a specific data type that determines what kind of data it can hold.

In this tutorial, we'll explore how variables work in C#, how to declare and initialize them, naming conventions, and best practices to follow when working with variables.

What are Variables?

A variable is essentially a name given to a memory location where data is stored. Think of variables as labeled boxes where you can put different types of information. In C#, each variable has:

  • A name that you use to reference it
  • A data type that defines what kind of data it can store
  • A value that represents the actual data stored

Declaring Variables in C#

To create a variable in C#, you need to declare it by specifying its data type and name. The basic syntax is:

dataType variableName;

For example, to declare an integer variable named age:

int age;

You can also initialize a variable (give it a value) when you declare it:

int age = 25;

Let's look at some examples of variable declarations with different data types:

// Numeric types
int count = 10; // Integer
double price = 15.99; // Double-precision floating point
float temperature = 98.6f; // Single-precision floating point
decimal money = 100.50m; // Decimal (note the 'm' suffix)

// Text type
string name = "John Doe"; // String of characters

// Single character type
char grade = 'A'; // Single character (note the single quotes)

// Boolean type
bool isActive = true; // Boolean (true or false)

// Date and time
DateTime today = DateTime.Now; // Current date and time

Example: Using Variables

Let's see a complete example of declaring variables and using them:

using System;

class Program
{
static void Main()
{
// Declaring variables
string studentName = "Maria Garcia";
int studentAge = 22;
double studentGPA = 3.8;
bool isEnrolled = true;

// Using variables in output
Console.WriteLine("Student Information:");
Console.WriteLine("------------------");
Console.WriteLine($"Name: {studentName}");
Console.WriteLine($"Age: {studentAge}");
Console.WriteLine($"GPA: {studentGPA}");
Console.WriteLine($"Currently Enrolled: {isEnrolled}");
}
}

Output:

Student Information:
------------------
Name: Maria Garcia
Age: 22
GPA: 3.8
Currently Enrolled: True

Variable Declaration Options

Multiple Variable Declaration

You can declare multiple variables of the same type in a single statement:

int x = 10, y = 20, z = 30;

Implicitly Typed Variables

C# allows you to use the var keyword to declare variables without explicitly stating their type. The compiler infers the type from the initializer:

var message = "Hello World"; // Compiler infers string type
var number = 42; // Compiler infers int type
var price = 9.99; // Compiler infers double type

Note: When using var, you must initialize the variable in the same statement since the compiler needs the initializer to determine the type.

Variable Naming Conventions in C#

Following proper naming conventions makes your code more readable and maintainable:

  1. Use camelCase for local variables and parameters (e.g., firstName, totalAmount)
  2. Start with a letter or underscore (not a number)
  3. Use descriptive names that indicate the purpose of the variable
  4. Avoid reserved keywords and abbreviations
  5. Don't use Hungarian notation (prefixing variable names with type information)

Good variable names:

int age;
string firstName;
double taxRate;
bool isComplete;

Poor variable names:

int a;            // Not descriptive
string str1; // Not descriptive
double d; // Not descriptive
bool b; // Not descriptive
string strName; // Hungarian notation (avoid)

Variable Scope

The scope of a variable determines where in your code the variable can be accessed:

Block Scope

Variables declared within code blocks (enclosed in {}) are accessible only within that block:

void ExampleMethod()
{
// This variable is accessible throughout the method
int outerVariable = 10;

if (outerVariable > 5)
{
// This variable is only accessible within this if block
int innerVariable = 20;

Console.WriteLine(outerVariable); // Works fine
Console.WriteLine(innerVariable); // Works fine
}

Console.WriteLine(outerVariable); // Works fine
// Console.WriteLine(innerVariable); // Error! Not accessible here
}

Method-Level Variables (Local Variables)

Variables declared within a method are only accessible within that method:

void MethodOne()
{
int localVariable = 10; // Only accessible in MethodOne
Console.WriteLine(localVariable);
}

void MethodTwo()
{
// Console.WriteLine(localVariable); // Error! Not accessible here
}

Class-Level Variables (Fields)

Variables declared at the class level are accessible throughout the class (depending on their access modifiers):

class Student
{
// Class-level variable (field)
private string name;

public void SetName(string studentName)
{
name = studentName; // Can access the field
}

public void DisplayName()
{
Console.WriteLine(name); // Can access the field
}
}

Constants

If you have values that should never change during program execution, you can use constants:

const double Pi = 3.14159;
const string CompanyName = "Acme Corporation";

// Cannot be changed later in the program
// Pi = 3.14; // This would cause a compile error

Practical Example: Temperature Converter

Let's build a simple temperature converter that demonstrates the use of variables:

using System;

class TemperatureConverter
{
static void Main()
{
// Declare variables
double celsius, fahrenheit;

// Get input from user
Console.Write("Enter temperature in Celsius: ");
string input = Console.ReadLine();

// Convert input to double and store in variable
celsius = Convert.ToDouble(input);

// Calculate conversion using the variable
fahrenheit = (celsius * 9 / 5) + 32;

// Output the result using variables
Console.WriteLine($"{celsius}°C is equal to {fahrenheit}°F");
}
}

Example output:

Enter temperature in Celsius: 25
25°C is equal to 77°F

Variable Type Conversion

C# provides several ways to convert variables from one type to another:

Implicit Conversion

Automatic conversion happens when there's no risk of data loss:

int intNumber = 10;
double doubleNumber = intNumber; // Implicit conversion from int to double

Explicit Conversion (Casting)

Explicit casting is required when there's a risk of data loss:

double doubleNumber = 10.5;
int intNumber = (int)doubleNumber; // Explicit cast, intNumber becomes 10

Convert Class

The Convert class provides methods for converting between types:

string stringValue = "42";
int intValue = Convert.ToInt32(stringValue);
double doubleValue = Convert.ToDouble(stringValue);

Parsing Methods

Type-specific parsing methods:

string stringValue = "42";
int intValue = int.Parse(stringValue);

TryParse for Safe Conversion

For safer conversions that handle potential errors:

string userInput = "abc";
int number;

if (int.TryParse(userInput, out number))
{
Console.WriteLine($"Parsed successfully: {number}");
}
else
{
Console.WriteLine("Could not parse the input as an integer");
}

Summary

In this tutorial, we've covered:

  • What variables are and their role in C# programs
  • How to declare and initialize variables with different data types
  • Variable naming conventions and best practices
  • Variable scope and accessibility
  • Constants for immutable values
  • Type conversion between different variable types

Variables form the foundation of any C# application. Mastering how to properly declare, initialize, and use variables is essential as you continue your journey in C# programming.

Additional Resources and Exercises

Practice Exercises

  1. Basic Variables: Write a program that declares variables for your name, age, and favorite number. Display these values in a sentence.

  2. Calculator: Create a simple calculator program that takes two numbers as input and outputs their sum, difference, product, and quotient.

  3. Circle Calculations: Write a program that calculates the area and circumference of a circle based on a radius input from the user.

  4. Temperature Converter: Extend the temperature converter example to convert from Fahrenheit to Celsius as well.

  5. Type Conversion Challenge: Write a program that demonstrates all different ways of converting between types (implicit, explicit, Convert class, Parse methods, TryParse).

Further Reading

💡 Found a typo or mistake? Click "Edit this page" to suggest a correction. Your feedback is greatly appreciated!