Latest web development tutorials

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