ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 메서드
    .NET/C# Basic 2008. 10. 7. 17:06
    반응형









    /*메서드 
    C# 메서드는 리턴형, 메서드 이름, 메서드 인자로 구성 
     메서드 구현 코드는 메서드 선언 부분 다음에 위치하며, return 문은 메서드를 종료하고 결과 값을 리턴할 때 사용 

     * 
     * using System;

    class Test
    {
        // 메서드 정의
        public static int Max( int v1, int v2 )
        {
            // 인자 값 비교 후, 큰 값을 리턴합니다.
            return ( v1 < v2 ) ? v2 : v1; 
        }

        static void Main() 
        {
           // 메서드 부르기
           Console.WriteLine( "MAX(100,200) : {0}", Max( 100, 200 ) ); // 200
         }
    }
    *

    using System;

    class Test
    {
    // 메서드 정의
    public int Max(int v1, int v2)
    {
    // 인자값 비교후, 큰값을 리턴합니다
    return(v1< v2) ? v2:v1;
    }
    static void Main()
    {
    // 메서드 부르기
    Test m=new Test();
    Console.WriteLine("MAX(100,200) : {0}", m.Max(100,200));
    }
    }

    /*메서드 오버로딩  
    C#에서는 같은 이름을 갖는 메서드를 여러 개 정의할 수 있어야 하는 대신 각 메서드는 다른 메서드형을 가지고 있어야 한다
    메서드형이란 메서드가 받아들이는 인자 개수나 각각의 인자형을 의미
    하나라도 틀리면 메서드형이 다른 것으로 간주 

     메서드의 인자형으로 메서드를 구분하는 것을 메서드 오버로딩(method overloading) 이라 한다
    void Show( int value )
     void Show( double value )
     void Show( string value )



    메서드 오버로딩을 사용한 메서드는 이름만 같을 뿐 사실은 별개의 메서드로 간주 
    Show( 100 );
     Show( 200.0F );
     Show( "this is string " );





     메서드 오버로딩  
    메서드 오버로딩은 나중에 클래스 생성자를 정의할 때 유용하게 사용
    생성자 이름은 클래스 이름과 같아야 하는데, 여러 개 생성자를 정의해야 하는 경우 
     * 
     * 
     * 생성된 동시에가능한 생성자~!!

      class Point
       {
       public Point() {...}
       public Point( int x, int y ) {...} => point  p = new point (10,20) => p.x p.y
       public Point( Point pt ) {...}   =>
       }


     */
     
     using System;
     
     namespace exam
     {
     
    class Class1
    {
    int i,j;
    public Class1()
    {
    }
    public Class1(int i, int j)
    {
    this.i = i;
    this.j = j;
    }
    public Class1(string test)
    {
    Console.WriteLine(test);
    }
    }
     
     
    class Class2
    {
    static void Main()
    {
    Class1 c = new Class1();
    Class1 c1 = new Class1(4,7);
    Class1 c2 = new Class1("heal");
    }
    }
     
     
     
     
     
     
     }


     /*  
     * 
     * 
    값형 인자 

    메서드는 인자를 받아들일 때 값형으로 받아들이거나, 레퍼런스형으로 받아들일 수 있다 
    두 개의 인자를 받아들여서 값을 바꾸어주는 Swap 메서드를 정의 
    인자 값을 넘기는 방식을 값만 가져다 사용한다고 해서 값(value)형 인자 방식이라고 한다 

      * 
      * 
      * using System;

    class Test
    {
        // 값형으로 인자를 받는 경우
        public static void Swap( int a, int b )
        {
            int temp = a;
            a = b;
            b = temp;
        }

        static void Main() 
        {
            int a = 100, b = 200;

            // 값형 인자, 메서드 부른 후 (a,b) = (100,200)
            Swap( a, b ); 
         }
    }
      * 
      * 
      * 
    레퍼런스형 인자 
    레퍼런스형 인자 방식은 값을 넘기는 것이 아니라 변수의 레퍼런스를 넘겨 준다
     레퍼런스형 인자는 ref 키워드로 지정 

      * 
      *  using System;

    class Test
    {
        // ref 형으로 인자를 받는 경우
        public static void Swap( ref int a, ref int b )
        {
            int temp = a;
            a = b;
            b = temp;
        }

        static void Main() 
        {
            int a = 100, b = 200;

            // ref 형 인자, 메서드 부른 후 (a,b) = (200,100)
            Swap( ref a, ref b ); 
         }
    }
      * 
      * ref 형과 out 형 
    ref 형 인자는 값을 넘겨주고 값을 받는 경우 
    out 형 인자는 넘겨주는 값은 없고, 값을 받기만 원하는 경우 



    using System;

    class Test
    {
        // out 형으로 인자를 받는 경우
        public static void Init( out int a, out int b )
        {
            a = 100;
            b = 200;
        }

        static void Main() 
        {
            int a, b;

            Init( out a, out b ); // out 형 인자
     
            Console.WriteLine( "(a,b) = ({0},{1})", a, b ); // (a,b) = (100,200)
         }
    }
      * 
      * 
      * 
    가변 인자 
    메서드에서 가변적으로 변하는 인자를 받아들이기 위해 params 키워드를 이용하면, 메서드가 취하는 인자 개수에 제한 없이 메서드를 구현 
    메서드가 정수 인자 리스트를 배열로 받아오는 예 

     * 
      * 
      * 
    // 인자로 여러 int 형 값을 받을 때
        public static void Show( params int[] args ) 
        {
            for ( int i = 0 ; i < args.Length ; i++ )
                Console.Write( args[i] + "," );
        }
      * 
      * 
      * 가변 인자를 받아들이는 메서드에 콤마를 이용해서 인자를 구분해서 넣어줄 수도 있고, 배열을 넘겨줄 수도 있다
      * 
      *   Show( 1, 2, 3 );
      Show( new int [3] { 1, 2, 3 } );




      * 가변 인자를 받아들이는 메서드에 콤마를 이용해서 인자를 구분해서 넣어줄 수도 있고, 배열을 넘겨줄 수도 있다 

      * 
      * 
      * 
      * 
      * 가변 인자 
    object 형을 가변 인자로 쓰면 어떤 데이터형 이라도 인자로 받아들일 수 있다 
     Show 메서드는 object 형 인자 리스트를 받아들이도록 구현한 예 
      // 인자로 여러 object 형 객체를 받을 때
       public static void Show( params object[] args ) 
       {
          for ( int i = 0 ; i < args.Length ; i++ )
             Console.WriteLine( "{0} ", i, (object)args[i] );
       }

       // 인자로 다양한 데이터형을 넘겨줄 수 있다.
       Show( 1, 'c', "string" ); 

      * 
     * 
     * 
     * 마무리 
    C#에서 제공하는 데이터형은 닷넷에서 제공하는 데이터형을 바탕으로 한다

    데이터형은 크게 값형과 레퍼런스형으로 분류 
    값(value)형  
    그 자체가 데이터 값이며 스택에 저장 
     int 형과 같은 기본 데이터형과 구조체(struct)가 여기에 해당 
    레퍼런스(Reference)형  
    데이터 값이 있는 곳을 가리키는 값으로 데이터 값은 힙에 저장 
    기본 데이터형 중에서 object 형과 string 형 그리고 클래스가 레퍼런스형 

    배열은 곧 Array 객체라고 할 수 있다 
    Array 객체의 Length 프로퍼티를 사용하거나 Sort 메서드를 불러서 정렬할 수도 있다

     * 
     * 
     * 
     * 
     */






    사칙연산각각의  메서드 테스트 예상 






    반응형

    '.NET > C# Basic' 카테고리의 다른 글

    클래스 관련 예제  (0) 2008.10.10
    상봉이 문제  (0) 2008.10.09
    정적맴버의 이해 인스턴스  (0) 2008.10.08
    소스 예제  (0) 2008.10.07
    C# 배열 연산자 제어문 foreach  (0) 2008.10.06
    c# ppt 4장  (0) 2008.10.02
    상철이 소스  (0) 2008.10.02
    C# PPT 1  (0) 2008.10.02

    댓글

Designed by Tistory.