Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie
Definiuj sygnatury metod i wartości zwracane, używaj metod expr-bodied, parametrów opcjonalnych i nazwanych oraz ref/out, a także poznaj przeciążanie. Uwaga: C# 6 nie obsługuje funkcji lokalnych.
Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 3 lekcji w sumie.
Podstawy metod
Cel: definiować przejrzyste metody, określając sygnaturę (nazwę, parametry i typ zwracany), zwięzłe ciało oraz przewidywalne działanie.
- Wartości zwracane
- Metody z ciałem wyrażeniowym
- Parametry opcjonalne i nazwane
Sygnatury i wartości zwracane
Metoda ma nazwę, parametry i typ zwracany. Nazwy powinny być jasne, a metody skoncentrowane na jednym zadaniu.
using System;
public class MathUtil
{
// Signature: name Add, parameters (int a, int b), return int
public static int Add(int a, int b)
{
return a + b;
}
}
public class Program
{
public static void Main(string[] args)
{
int s = MathUtil.Add(2, 3);
Console.WriteLine("Sum = " + s);
}
}
Metody z ciałem wyrażeniowym
Metody z ciałem wyrażeniowym używają => w małych i przejrzystych metodach pomocniczych.
using System;
public static class FormatUtil
{
// Expression-bodied method (C# 6): concise one-liner
public static string Greet(string name) => "Hello, " + name + "!";
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(FormatUtil.Greet("Ada"));
}
}
Parametry opcjonalne i nazwane
Parametrów opcjonalnych należy używać do określania rozsądnych wartości domyślnych, a argumentów nazwanych — dla większej jasności w miejscu wywołania.
using System;
public static class Logger
{
// Optional parameter: times has a default
public static void Log(string message, int times = 1)
{
for (int i = 0; i < times; i = i + 1)
{
Console.WriteLine(message);
}
}
}
public class Program
{
public static void Main(string[] args)
{
Logger.Log("One time"); // uses default
Logger.Log(message: "Twice", times: 2); // named arguments
}
}
Podstawy ref i out
ref: zmienna musi mieć przypisaną wartość przed wywołaniem. out: metoda musi przypisać wartość przed zwróceniem.
using System;
public static class RefOutDemo
{
public static void Increment(ref int x)
{
x = x + 1; // modifies caller's variable
}
public static bool TryDivide(int a, int b, out int result)
{
if (b == 0)
{
result = 0; // out must be assigned before return
return false;
}
result = a / b;
return true;
}
}
public class Program
{
public static void Main(string[] args)
{
int n = 10;
RefOutDemo.Increment(ref n);
Console.WriteLine("n = " + n); // 11
int r;
bool ok = RefOutDemo.TryDivide(9, 0, out r);
Console.WriteLine("ok=" + ok + " r=" + r);
}
}
Przeciążanie i uwaga
Przeciążanie pozwala używać jednej nazwy dla powiązanych operacji. Uwaga: funkcje lokalne pojawiły się w późniejszych wersjach C#; w C# 6 należy używać małych prywatnych metod pomocniczych.
using System;
public static class Calc
{
// Overloads: same name, different parameter lists
public static int Area(int side) { return side * side; }
public static int Area(int width, int height) { return width * height; }
// C# 6 has no local functions; use private helpers instead.
private static int DoubleIt(int x) { return x + x; }
public static int TwiceArea(int side)
{
int a = Area(side);
return DoubleIt(a);
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Area square 3 = " + Calc.Area(3));
Console.WriteLine("Area rect 3x4 = " + Calc.Area(3, 4));
Console.WriteLine("Twice area of 3 = " + Calc.TwiceArea(3));
}
}
Zasada ref i out
Podsumowanie
Podsumowanie: należy projektować jasne sygnatury i wartości zwracane oraz tworzyć małe metody pomocnicze z ciałem wyrażeniowym; dla czytelności warto używać parametrów opcjonalnych i nazwanych; należy znać różnicę między ref i out oraz ostrożnie przeciążać metody. Funkcje lokalne pojawiły się w późniejszych wersjach C# — w C# 6 należy używać prywatnych metod pomocniczych.
Często zadawane pytania
Czy lekcja „Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie” jest bezpłatna?
Tak — pełny tekst „Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 3 lekcji w sumie.
Co nauczysz się w „Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie”?
Definiuj sygnatury metod i wartości zwracane, używaj metod expr-bodied, parametrów opcjonalnych i nazwanych oraz ref/out, a także poznaj przeciążanie. Uwaga: C# 6 nie obsługuje funkcji lokalnych. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C# Academy?
Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.
Ile czasu zajmuje lekcja „Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?
Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Sygnatury i wartości zwracane; expr-bodied; parametry opcjonalne/imienne; ref/out; przeciążanie
- Parametry opcjonalne i nazwane; ref/out/in (podstawy)
- Funkcje lokalne (uwaga dotycząca C# 6) i przeciążanie