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!