მეთოდები არის ფუნქციები, რომლებიც განსაზღვრულია კლასში. C# მხარს უჭერს მდიდარ პარამეტრების ფუნქციებს — სამეთოდო/დასახელებული არგუმენტები, ref/out/in მოდიფიკატორები, მასივები — და (მრავალი მეთოდი იგივე სახელით მაგრამ სხვადსხვა პარამეტრებით).
მეთოდები არის ფუნქციები, რომლებიც განსაზღვრულია კლასში. C# მხარს უჭერს მდიდარ პარამეტრების ფუნქციებს — სამეთოდო/დასახელებული არგუმენტები, ref/out/in მოდიფიკატორები, მასივები — და (მრავალი მეთოდი იგივე სახელით მაგრამ სხვადსხვა პარამეტრებით).
paramspublic int Add(int a, int b) => a + b; // expression-bodied (concise)
public string Greet(string name, string greeting = "Hello") // default parameter
{
return $"{greeting}, {name}";
}
Greet("Ann"); // "Hello, Ann"
Greet("Ann", greeting: "Hi"); // named argument
მეთოდები განსაზღვრავენ დაბრუნების ტიპს, სახელს და პარამეტრებს. ნაგულისხმები პარამეტრები ხდის არგუმენტებს აუცილებელად, და დასახელებული არგუმენტები გაძლევთ სახელით გადაცემის შესაძლებლობას (უფრო ნათელი, შეუძლია გამოტოვოს სამეთოდო).
// ref — pass by reference (method can modify the caller's variable)
void Increment(ref int x) { x++; }
int n = 5; Increment(ref n); // n is now 6
// out — for returning multiple values (must be assigned in the method)
bool TryParse(string s, out int result) { result = ...; return true; }
if (int.TryParse("42", out int value)) { } // the common TryX pattern
// in — pass by reference but READ-ONLY (performance for large structs)
void Process(in LargeStruct data) { }
out ფართოდ გამოიყენება TryParse შაბლონში (დაბრუნება წარმატების დროშა პლუს შედეგი უსაფრთხოდ); ref საშუალებას აძლევს მოვიფიკოთ მომწოდებლის ცვლადი; in პიტნის დიდი სტრუქტურები ეფექტურად კოპირების გარეშე.
// params — variable number of arguments
int Sum(params int[] numbers) => numbers.Sum();
Sum(1, 2, 3, 4); // any number
// OVERLOADING — same name, different parameters
void Print(int x) { }
void Print(string s) { }
void Print(int x, int y) { }
Print(5); // calls the int version — resolved by argument types
გადატვირთვა საშუალებას აძლევს მრავალ მეთოდს გაზიარონ სახელი, განასხვავებული პარამეტრის ტიპებით/რაოდენობით — კომპილატორი ირჩევს შესატყვის ერთს. params იღებს ცვლადი რიცხვის არგუმენტებს.
მეთოდები არის C#-ში ქცევის საბუშ ბლოკები, და მათი მდიდარი პარამეტრების ფუნქციების გაგება მნიშვნელოვანია მოქნილი, გამოხატული კოდის წერისთვის.
მეთოდების განსაზღვრის ცოდნა (მათ შორის მოკლე გამოხატვით-სხეულის სინტაქსი), ნაგულისხმები და დასახელებული პარამეტრების გამოყენება (სამეთოდო არგუმენტებისა და წაკითხული ზარებისთვის), და მეთოდის გადატვირთვა (იგივე სახელი, სხვადსხვა პარამეტრები — ინტუიციური API-ებისთვის, რომლებიც სხვადსხვა არგუმენტის ტიპებს სამუშაოდ) ყოველდღიური ცოდნაა.
პარამეტრის მოდიფიკატორები განსაკუთრებით მნიშვნელოვანია გასაგებად: out ფართოდ გამოიყენება ფართოდ გავრცელებულ TryParse შაბლონში (int.TryParse(s, out var result) — უსაფრთხოდ დაბრუნება წარმატების დროშა და შედეგი გამონაკლისების გარეშე, საერთო, იდიომატური C# შაბლონი), ref საშუალებას აძლევს მოვიფიკოთ მომწოდებლის ცვლადი, და in პიტნის დიდი სტრუქტურები მითითების მიერ საქმედ.
uit შაბლონი) — უსაფრთხოდ დაბრუნება წარმატების დროშა და შედეგი გამონაკლისების გარეშე, საერთო, იდიომატური C# შაბლონი), ref საშუალებას აძლევს მოვიფიკოთ მომწოდებლის ცვლადი, და in პიტნის დიდი სტრუქტურები მითითების მიერ საქმედ.
ამ ღირებულების გაგება — მეთოდები, პარამეტრის ფუნქციები (სამეთოდო/დასახელებული/params), გადატვირთვა მოქნილი API-ებისთვის, და ref/out/in მოდიფიკატორები (განსაკუთრებით out-დაფუძნებული TryParse იდიომი) — ფუნდამენტურია როგორც C# მეთოდების წერისა, ასევე C# მეთოდების გამოყენების თქმით. API-ებზე, რომლებიც ამ ფუნქციებზე დამოკიდებულია.
ვინაიდან მეთოდები და მათი პარამეტრები ცენტრალურია ყველა C# კოდთან, და ვინაიდან ფუნქციები, როგორიცაა გადატვირთვა, სამეთოდო პარამეტრები და TryX შაბლონი მუდმივად გამოჩნდება, მათი დაუფლება ძირითადი, აუცილებელი ცოდნაა ეფექტური C# განვითარებისთვის.