Metoda C #
Jednym ze sposobów jest umieścić kilka istotnych wypowiedzi zgrupowanych w bloku instrukcji do wykonywania zadań. Każdy program ma co najmniej klasy C # za pomocą metody Main.
Aby użyć metody, trzeba:
- metoda definicja
- Wywołać metodę
Metoda C #, jak określono w
Przy określaniu sposobu, zasadniczo rzecz biorąc, jest to zestawienie elementów konstrukcji. W języku C #, metoda definicji składnia jest następująca:
<Dostęp Specyfikator> <Powrót Rodzaj> <Metoda Name> (Lista parametrów) { metoda ciała }
Poniżej przedstawiono poszczególne elementy:
- Dostęp Specyfikator: modyfikator dostępu, zmienne decyzyjne lub metody dla innej klasy widoczności.
- Zwraca typ: typ zwracany, metoda może zwracać wartość.Zwracany typ to typ danych wartości zwracanej przez metodę. Jeśli metoda nie zwraca żadnych wartości, typ zwracany jestnieaktualna.
- Nazwa metody: nazwa metody, to unikatowy identyfikator i jest wielkość liter.Nie może być taka sama, jak innych zgłoszenia identyfikator klasy.
- Lista parametrów: lista parametrów, w nawiasach, parametr służy do transmisji danych i sposobu przyjmującego.Lista parametrów parametr typu odnosi się do sposobu, w kolejności i ilości. Parametr jest opcjonalne, to znaczy, sposób może zawierać parametry.
- Metoda ciała: ciało metody, łącznie z koniecznością wykonywania zadań zestaw instrukcji.
Przykłady
Poniższy fragment kodu pokazuje funkcjęFindMax,który przyjmuje dwie wartości całkowite i zwraca większą z dwóch wartości. Ma modyfikator dostępu publicznego, więc można go uzyskać za pomocą instancji klasy spoza klasy.
class NumberManipulator { public int FindMax(int num1, int num2) { /* 局部变量声明 */ int result; if (num1 > num2) result = num1; else result = num2; return result; } pl. }
Zadzwoń do metod w C #
Można użyć nazwy metody wywołującego. Poniższy przykład ilustruje ten punkt:
using System; nazw CalculatorApplication { Klasa NumberManipulator { public int FindMax (int num1, int num2) { / * Deklaracja Zmienna lokalna * / int wynik; if (num1> num2) wynik = num1; więcej wynik = num2; powrót rezultat; } static void Main (string [] args) { / * Definicje zmiennej lokalnej * / int a = 100; int b = 200; int ret; NumberManipulator n = new NumberManipulator (); // Wywołanie FindMax Metoda ret = n.FindMax (a, b); Console.WriteLine ( "Max jest: {0}", ret); Console.ReadLine (); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
Maksymalna wartość wynosi: 200
Można także inne rodzaje publicznych metod instancji klasy wywoływana z innej klasy. Na przykład, metodaFindMaxnależą klasęNumberManipulator,można nazwać to z innej klasytestin.
using System; nazw CalculatorApplication { Klasa NumberManipulator { public int FindMax (int num1, int num2) { / * Deklaracja Zmienna lokalna * / int wynik; if (num1> num2) wynik = num1; więcej wynik = num2; powrót rezultat; } } Klasa kontrolna { static void Main (string [] args) { / * Definicje zmiennej lokalnej * / int a = 100; int b = 200; int ret; NumberManipulator n = new NumberManipulator (); // Wywołanie FindMax Metoda ret = n.FindMax (a, b); Console.WriteLine ( "Max jest: {0}", ret); Console.ReadLine (); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
最大值是: 200
Rekurencyjne wywołania metod
Metoda może wywołać siebie. To się nazywarekurencji.Poniższy przykład używa funkcji rekurencyjnej, aby obliczyć silnię liczby:
using System; nazw CalculatorApplication { Klasa NumberManipulator { public int silnia (int num) { / * Definicje zmiennej lokalnej * / int wynik; if (num == 1) { zwraca 1; } więcej { wynik = silnia (num - 1) * num; powrót rezultat; } } static void Main (string [] args) { NumberManipulator n = new NumberManipulator (); // Wywołanie silni metody Console.WriteLine ( "6 silnia to: {0}", n.factorial (6)); Console.WriteLine ( "7 silnia to: {0}", n.factorial (7)); Console.WriteLine ( "8 silnia to: {0}", n.factorial (8)); Console.ReadLine (); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
6 silnia jest: 720 7 silnia jest: 5040 8 silnia jest: 40320
parametr przechodzącej
Podczas wywołania metody z parametrami, musisz przekazać parametry do metody. W języku C #, istnieją trzy sposoby przekazywania parametrów do metody:
方式 | 描述 |
---|---|
值参数 | 这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。 |
引用参数 | 这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值。 |
输出参数 | 这种方式可以返回多个值。 |
Przekazywanie parametrów przez wartość
Jest to przejście domyślne parametrów. W ten sposób, gdy dzwonisz to metoda, która tworzy nową lokalizację zapisu dla każdego parametru.
Rzeczywista wartość parametru jest kopiowana do parametrów, argumentów i parametrów stosowanych w dwóch różnych wartości w pamięci. Tak więc, gdy zmienia się wartość parametru nie ma wpływu na wartość argumentu, zapewniając tym samym bezpieczeństwo danych rzeczywistego parametru. Poniższy przykład ilustruje tę koncepcję:
using System; namespace CalculatorApplication { class NumberManipulator { public void swap(int x, int y) { int temp; temp = x; /* 保存 x 的值 */ x = y; /* 把 y 赋值给 x */ y = temp; /* 把 temp 赋值给 y */ } static void Main(string[] args) { NumberManipulator n = new NumberManipulator(); /* 局部变量定义 */ int a = 100; int b = 200; Console.WriteLine("在交换之前,a 的值: {0}", a); Console.WriteLine("在交换之前,b 的值: {0}", b); /* 调用函数来交换值 */ n.swap(a, b); Console.WriteLine("在交换之后,a 的值: {0}", a); Console.WriteLine("在交换之后,b 的值: {0}", b); Console.ReadLine(); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
在交换之前,a 的值:100 在交换之前,b 的值:200 在交换之后,a 的值:100 在交换之后,b 的值:200
Wyniki pokazały, że nawet w obrębie funkcja zmienia wartość, wartość jakichkolwiek zmian zaszło.
Przekazać parametry przez odniesienie
Parametr referencyjnyjest odwołaniem do zmiennej lokalizacji pamięci.Gdy parametry przekazywane przez referencję, z wartością parametru jest inna jest to, że nie tworzy nowego miejsca przechowywania tych parametrów. Parametr referencyjny reprezentuje rzeczywisty parametr metody ma ten sam obszar pamięci.
W języku C #, używając słowa kluczowegoref zadeklarować parametr odniesienia.Poniższy przykład ilustruje ten punkt:
using System; nazw CalculatorApplication { Klasa NumberManipulator { public void swap (ref int x, int y ref) { int temp; temp = x / * zapisać wartość x * / X = Y / * y jest przypisany x * / y = temp; / * przypisanie do temp y * / } static void Main (string [] args) { NumberManipulator n = new NumberManipulator (); / * Definicje zmiennej lokalnej * / int a = 100; int b = 200; Console.WriteLine ( "Przed wymianą, wartość: {0}", a); Console.WriteLine ( "przed wymianą, b wartości: {0}", b); / * Wywołanie funkcji do wartości wymiennej * / n.swap (ref ref a, b); Console.WriteLine ( "Po wymianie, wartość: {0}", a); Console.WriteLine ( "po wymianie, wartość B: {0}", b); Console.ReadLine (); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
在交换之前,a 的值:100 在交换之前,b 的值:200 在交换之后,a 的值:200 在交换之后,b 的值:100
Wyniki wykazały, że wartość funkcjizamianyw obrębie zmiany, a zmiana ta może zostać odzwierciedlonewfunkcjigłównego.
Przekazywanie parametrów przez wyjście
Instrukcja return może być używany tylko do zwracania wartości z funkcji. Jednakże, można użyćparametru wyjściowego wrócić dwóch wartości z funkcji.Wyjście danych Sposób wyświetlania parametrów przypisze własną rękę, i inne podobne parametry referencyjne.
Poniższy przykład ilustruje ten punkt:
using System; namespace CalculatorApplication { class NumberManipulator { public void getValue(out int x ) { int temp = 5; x = temp; } static void Main(string[] args) { NumberManipulator n = new NumberManipulator(); /* 局部变量定义 */ int a = 100; Console.WriteLine("在方法调用之前,a 的值: {0}", a); /* 调用函数来获取值 */ n.getValue(out a); Console.WriteLine("在方法调用之后,a 的值: {0}", a); Console.ReadLine(); } } }
Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:
在方法调用之前,a 的值: 100 在方法调用之后,a 的值: 5
Dostarczane do zmiennych parametrów wyjścia nie wymaga przyporządkowania. Kiedy trzeba zwrócić wartość z początkowej wartości parametru nie jest określony w sposób, parametr wyjściowy jest szczególnie przydatna. Rozważmy następujący przykład, aby to zrozumieć:
using System; namespace CalculatorApplication { class NumberManipulator { public void getValues(out int x, out int y ) { Console.WriteLine("请输入第一个值: "); x = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入第二个值: "); y = Convert.ToInt32(Console.ReadLine()); } static void Main(string[] args) { NumberManipulator n = new NumberManipulator(); /* 局部变量定义 */ int a , b; /* 调用函数来获取值 */ n.getValues(out a, out b); Console.WriteLine("在方法调用之后,a 的值: {0}", a); Console.WriteLine("在方法调用之后,b 的值: {0}", b); Console.ReadLine(); } } }
Jeżeli powyższy kod jest kompilowany i wykonywany, to daje następujące wyniki (w zależności od danych wprowadzonych przez użytkownika):
Proszę wprowadzić wartość: 7 Proszę wprowadzić drugą wartość: 8 Po wywołaniu metody wartość: 7 Po wywołaniu metody, b wartości: 8