Skip to main content

Functions in C#

Functions, also known as methods, in C# are blocks of code that perform a specific task. They help modularize code and promote reusability.


1. Structure of a Function​

The basic structure of a function in C# includes an access modifier, return type, name, parameters (optional), and a body.

[access_modifier] return_type FunctionName([parameters]) {
// Function body
}

Example:​

public int Add(int a, int b) {
return a + b;
}

2. Access Modifiers​

C# functions use access modifiers to control their visibility and accessibility:

  • public: Accessible from any class.
  • private: Accessible only within the containing class.
  • protected: Accessible within the containing class and derived classes.
  • internal: Accessible within the same assembly.
  • protected internal: Accessible within the same assembly or derived classes.

3. Return Types​

A function in C# can have any data type as its return type or be void if it returns no value.

Example:​

public int Multiply(int x, int y) {
return x * y; // returns an integer
}

public void DisplayMessage() {
Console.WriteLine("Hello, World!"); // returns no value
}

4. Parameters and Arguments​

Functions can take parameters as input. Parameters are defined in the function signature, and arguments are the actual values passed.

Example:​

public int Subtract(int a, int b) {
return a - b;
}

// Usage
int result = Subtract(10, 5); // Passes 10 and 5 as arguments

5. Method Overloading​

Method overloading allows multiple methods to have the same name but different parameters.

Example:​

public int Add(int a, int b) {
return a + b;
}

public double Add(double a, double b) {
return a + b;
}

6. Static Methods​

Static methods belong to the class rather than an instance and can be called directly using the class name.

Example:​

public static void PrintMessage() {
Console.WriteLine("This is a static method.");
}

// Usage
ClassName.PrintMessage();

7. Recursive Functions​

A recursive function is one that calls itself until a base condition is met.

Example:​

public int Factorial(int n) {
if (n <= 1) return 1;
return n * Factorial(n - 1);
}

8. Lambda Expressions​

Lambda expressions provide a concise syntax to define anonymous functions.

Example:​

Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // Outputs: 25

9. Async Functions​

Async functions allow asynchronous programming, making use of the async and await keywords.

Example:​

public async Task<string> GetDataAsync() {
await Task.Delay(1000); // Simulates asynchronous operation
return "Data loaded";
}

Summary​

Functions are essential in C# for creating reusable, organized, and maintainable code. Understanding the types, access modifiers, and usage of functions will enhance your programming capabilities.

Happy coding!