C# Tutorial: Functions and Methods
Static methods, parameters, return types, overloads, optional/named args, and expression bodies in C#.
Basic Method
```csharp
static int Add(int a, int b) {
return a + b;
}
Console.WriteLine(Add(3, 4)); // 7
```
---
Expression-Bodied Members
For one-liners, use `=>`:
```csharp
static int Square(int n) => n * n;
static string Greet(string name) => $"Hello, {name}!";
```
---
Multiple Return Values (Tuples)
```csharp
static (int Min, int Max) MinMax(int[] arr) {
return (arr.Min(), arr.Max());
}
var (min, max) = MinMax(new[] { 3, 1, 4, 1, 5 });
Console.WriteLine($"{min} – {max}"); // 1 – 5
```
---
Optional Parameters
```csharp
static string Greet(string name, string greeting = "Hello") {
return $"{greeting}, {name}!";
}
Greet("Alice"); // Hello, Alice!
Greet("Bob", "Hi"); // Hi, Bob!
```
---
Named Arguments
```csharp
static void Config(int timeout = 30, bool retry = true) { ... }
Config(retry: false, timeout: 60); // order doesn't matter
```
---
ref and out Parameters
```csharp
static void Swap(ref int a, ref int b) {
int temp = a; a = b; b = temp;
}
int x = 1, y = 2;
Swap(ref x, ref y); // x=2, y=1
// out — method sets the value
static bool TryDouble(int n, out int result) {
result = n * 2;
return n > 0;
}
TryDouble(5, out int doubled); // doubled = 10
```
---
Method Overloading
Same name, different signatures:
```csharp
static int Add(int a, int b) => a + b;
static double Add(double a, double b) => a + b;
static string Add(string a, string b) => a + b;
```
---
What's Next?
You can write reusable methods. Next: **properties and ref types** — fields, properties, `get`/`set`, and value vs reference semantics.
What you'll learn in this C# functions and methods tutorial
This interactive C# tutorial has 5 hands-on exercises. Estimated time: 12 minutes.
- Basic Method — Write a `static int Add(int a, int b)` method that returns the sum of two integers. Call it with `3` and `4` and print t…
- Expression-Bodied Method — Write an expression-bodied method `static string Greet(string name)` that returns `"Hello, {name}!"`. Call it with `"Wor…
- Optional Parameters — Write `static string Greet(string name, string greeting = "Hello")`. Call it once with just a name (prints `"Hello, Alic…
- Returning a Tuple — Write `static (int Min, int Max) MinMax(int[] arr)` that returns the minimum and maximum values. Call it on `{ 3, 1, 4, …
- out Parameter — Use `int.TryParse` to safely parse `"42"` into an `int` using an `out` parameter. If successful, print the parsed value.
C# Functions and Methods concepts covered
- Basic Method
- Expression-Bodied Members
- Multiple Return Values (Tuples)
- Optional Parameters
- Named Arguments
- ref and out Parameters
- Method Overloading
- What's Next?