C #을 방법
하나의 방법은 작업을 수행하는 명령문의 블록 그룹화 일부 관련 구문을 넣는 것이다. 모든 프로그램은 주요 방법으로 적어도 C # 클래스가 있습니다.
방법을 사용하려면 다음이 필요합니다
- 정의 방법
- 메소드를 호출
항에 C # 1에있어서
방법을 정의 할 때, 기본적으로 말하면, 그 구성 요소의 문이다. 다음 C #에서 구문 정의 방법은 :
<액세스 지정자> <리턴 유형> <메소드 이름> (파라미터리스트) { 방법 바디 }
다음의 각 요소 :
- 접근 지정자의 액세스 수정, 다른 클래스의 가시성에 대한 의사 결정 변수 또는 방법.
- 반환 유형 : 반환 형식, 방법은 값을 반환 할 수 있습니다.반환 형식은 메소드가 리턴 값의 데이터 타입입니다. 상기 방법은 임의의 값을 리턴하지 않는다면, 리턴 타입은무효이다.
- 방법 이름 : 메소드 이름은 고유 한 식별자이며, 대소 문자를 구분합니다.그것은 다른 식별자 클래스 선언과 동일 할 수 없습니다.
- 파라미터리스트 : 괄호 안에 파라미터 목록 매개 변수는 데이터 송신 및 수신 방법에 사용된다.파라미터리스트는 방법, 순서 및 양의 파라미터 타입을 지칭한다. 매개 변수 즉, 방법은 매개 변수를 포함 할 수 없습니다 말을하는 것입니다, 선택 사항입니다.
- 방법 본체 : 작업을 명령어 세트를 완료 할 필요를 포함하는 방법 몸.
예
다음의 코드는 두 개의 정수 값을 허용하는 기능FindMax을보여주고, 두 값의 큰 반환합니다. 그것은 공공 액세스 한정자를 가지고, 그래서 클래스 외부에서 클래스의 인스턴스를 사용하여 액세스 할 수 있습니다.
class NumberManipulator { public int FindMax(int num1, int num2) { /* 局部变量声明 */ int result; if (num1 > num2) result = num1; else result = num2; return result; } ... }
C #에서 메소드를 호출
당신은 호출하는 메소드의 이름을 사용할 수 있습니다. 다음의 예는이 점을 보여
시스템을 이용하여; 네임 스페이스 CalculatorApplication { 클래스 NumberManipulator { 공공 INT FindMax (INT NUM1, INT NUM2) { / * 로컬 변수 선언 * / INT 결과; 경우 (NUM1> NUM2) 결과 = NUM1; 그렇지 않으면 결과 = NUM2; 결과를 반환; } 정적 무효 메인 (문자열 []에 인수) { / * 로컬 변수 정의 * / INT의 A = 100; INT B = 200; INT의 RET; NumberManipulator N = 새로운 NumberManipulator (); // 전화 FindMax 방법 RET = n.FindMax (A, B); Console.WriteLine ( "최대입니다 : {0}", RET); Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
최대 값은 다음과 같습니다 (200)
당신은 다른 클래스에서 public 메소드 클래스 인스턴스의 다른 유형이라고 할 수 있습니다. 예를 들어,NumberManipulator 클래스에속하는FindMax방법, 당신은 다른 클래스테스트에서호출 할 수 있습니다.
시스템을 이용하여; 네임 스페이스 CalculatorApplication { 클래스 NumberManipulator { 공공 INT FindMax (INT NUM1, INT NUM2) { / * 로컬 변수 선언 * / INT 결과; 경우 (NUM1> NUM2) 결과 = NUM1; 그렇지 않으면 결과 = NUM2; 결과를 반환; } } 클래스 테스트 { 정적 무효 메인 (문자열 []에 인수) { / * 로컬 변수 정의 * / INT의 A = 100; INT B = 200; INT의 RET; NumberManipulator N = 새로운 NumberManipulator (); // 전화 FindMax 방법 RET = n.FindMax (A, B); Console.WriteLine ( "최대입니다 : {0}", RET); Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
最大值是: 200
재귀 메서드 호출
방법은 자기를 호출 할 수 있습니다. 이것은재귀라고합니다.다음의 예는 다수의 요인을 계산하는 재귀 함수를 사용
시스템을 이용하여; 네임 스페이스 CalculatorApplication { 클래스 NumberManipulator { 공공 INT 계승 (INT NUM) { / * 로컬 변수 정의 * / INT 결과; 경우 (NUM == 1) { 1를 반환; } 그렇지 않으면 { 결과 = 계승 (NUM - 1) * 납입; 결과를 반환; } } 정적 무효 메인 (문자열 []에 인수) { NumberManipulator N = 새로운 NumberManipulator (); // 계승 방법 Console.WriteLine을 호출 ( "6 요인은 다음과 같습니다 {0}", n.factorial (6)); Console.WriteLine는 ( "7 요인은 다음과 같습니다 {0}", n.factorial (7)); Console.WriteLine는 ( "8 요인은 다음과 같습니다 {0}", n.factorial (8)); Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
6 요인은 다음과 같습니다 (720) 7 요인은 다음과 같습니다 5040 8 요인은 다음과 같습니다 40320
매개 변수 전달
이 매개 변수를 사용하여 메서드를 호출 할 때, 당신은 방법에 매개 변수를 전달해야합니다. C #에서, 상기 방법에 매개 변수를 전달하는 방법은 세 가지가 있습니다 :
方式 | 描述 |
---|---|
值参数 | 这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。 |
引用参数 | 这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值。 |
输出参数 | 这种方式可以返回多个值。 |
값으로 매개 변수 전달
이것은 기본 매개 변수 전달됩니다. 이러한 방식으로, 각 매개 변수에 대한 새로운 저장 위치를 생성하는 방법을 호출 할 때.
실제 매개 변수 값은 두 개의 서로 다른 메모리 값에 사용되는 매개 변수, 인수 및 매개 변수에 복사됩니다. 그래서 때 매개 변수 값 변경 따라서 실제 파라미터 데이터 보안을 보장 인수의 값에 영향을 미치지 않을 것이다. 다음 예제에서는이 개념을 보여줍니다 :
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(); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
在交换之前,a 的值:100 在交换之前,b 的值:200 在交换之后,a 的值:100 在交换之后,b 的值:200
그 결과를도 함수 값을 변경 내 변화의 값이 일어난 것으로 나타났다.
참조에 의해 매개 변수를 전달
기준 파라미터 변수메모리 위치를 참조한다.매개 변수의 값을 참조로 전달 된 파라미터는, 다른 경우 그것은 이들 파라미터를위한 새로운 저장 위치를 생성하지 않는다는 것이다. 기준 파라미터는에있어서의 실제 파라미터가 동일한 메모리 위치를 가지고 나타낸다.
C 번호에서REF 키워드를 사용하는 것은 기준 파라미터를 선언.다음의 예는이 점을 보여
시스템을 이용하여; 네임 스페이스 CalculatorApplication { 클래스 NumberManipulator { 공공 무효 스왑 (심판 INT의 X, 심판 INT Y) { INT 온도; 온도 = X; / * X의 *의 값을 저장 / X = Y / * Y는 X의 *에 할당 / Y = 임시; / * y를 *에 임시 할당 / } 정적 무효 메인 (문자열 []에 인수) { NumberManipulator N = 새로운 NumberManipulator (); / * 로컬 변수 정의 * / INT의 A = 100; INT B = 200; Console.WriteLine ( "교환하기 전에, 값 : {0}", a); Console.WriteLine ( "교환하기 전에, B 값 : {0}", B) / * 교환 가치로 함수를 호출 * / n.swap (A, 심판 B를 심판); Console.WriteLine ( "교환 한 후, 값 :가 {0} 인"는) Console.WriteLine ( "교환 한 후, B 값 : {0}", B) Console.ReadLine (); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
在交换之前,a 的值:100 在交换之前,b 的值:200 在交换之后,a 的值:200 在交换之后,b 的值:100
결과는 변화율스왑함수의 값을 보였으며, 이러한변화는 메인함수에 반영 될 수있다.
출력에 의해 매개 변수를 전달
return 문은 함수에서 값을 반환하는 데에만 사용할 수 있습니다. 그러나 함수에서 두 값을 반환하는출력 매개 변수를 사용할 수 있습니다.자신의 데이터를 할당 된 출력 파라미터 출력 방법, 및 기타 유사한 파라미터를 참조.
다음의 예는이 점을 보여
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(); } } }
상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를
在方法调用之前,a 的值: 100 在方法调用之后,a 的值: 5
출력 매개 변수에 공급하는 할당을 필요로하지 않는다. 당신이 방법에 지정되지 않은 매개 변수의 초기 값에서 값을 반환해야하는 경우, 출력 매개 변수에 특히 유용합니다. 이 문제를 이해하기 위해 다음 예를 살펴 보겠습니다 :
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(); } } }
상기 코드는 컴파일되고 실행되면, 그것은 다음과 같은 결과가 (유저 입력에 따라) 생성 :
값을 입력하세요 : (7) 두 번째 값을 입력하십시오 : 8 메서드 호출 후, 값 : 7 메서드 호출 후, B 값 : 8