ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • static정적맴버 배열 연산자 is/as foreach 문 메서드 오버로딩 메서드 가변 인자
    .NET/C# Basic 2008. 10. 14. 21:41
    반응형



    정적(static)  멤버
    일반적인 객체 사용 방법은 클래스를 정의하고, 여러 개의 인스턴스를 생성
    현재 생성된 총 인스턴스 수를 구하려면 정수형 변수를 두고 인스턴스를 생성할 때마다 하나씩 증가
    인스턴스간에 공유해야 하는 값이 필요한 경우, 정적(static) 멤버를 사용

    using System;

     

    class Point
    {
     public Point()
     {
      bbb++;
      Console.WriteLine("생성"+ bbb);
     }

     

     public int bbb = 0;
     // static int bbb = 0;v //  스택틱하면 값이 더해진다
    }

     


    class jks
    {
     static void Main()
     {
      Point pt = new Point();
      Point pt1 = new Point();
     }
    }






    배열//////

    using System;

    namespace jkstest
    {
     class arraytest
     {
      static void Main()
      {
       int[] arrayA = new int[7];

       for(int a = 0 ; a <  arrayA.Length ; a++ )
       {
        arrayA[a] = a;
        Console.WriteLine(arrayA[a]);
       }
      }
     }
    }

    ///////////////////
     

    Sort

    배열에 있는 요소 값을 정렬

     )  Array.Sort( arr );

    Reverse

    배열에 요소 값을 거꾸로 배치

    )  Array.Reverse( arr );

    IndexOf

    배열의 처음부터 값을 찾기 시작해서 맨 처음 찾은 값의 위치를 알려준다.

    ) int index = Array.IndexOf( arr, Value );

    LastIndex

    배열의 끝에서부터 거꾸로 찾아서 위치를 알려준다.

    ) int index = Array.LastIndexOf( arr, Value );

    BinarySearch

    배열에서 binary search를 수행

    ) int index = Array.BinarySearch( arr, Value );



    is/as

    is 연산자는 생성한 object 객체가 원하는 객체인지 확인할 때 사용
          
           // is 연산자
        object obj = "문자열입니다.";

        if ( obj is string ) // string 형인가요?
            Console.WriteLine ("obj is string");

    as 연산자는 object 객체가 원하는 객체인지 확인하고 틀리면 null 값을 리턴하고 맞으면 해당하는 객체로 변환해서 리턴
    .
    // as 연산자
        string s = obj as string; // string 형 변환

        if ( s != null )
            Console.WriteLine ( "'" + s + "'" );

     

           foreach
    배열이나 콜렉션에서 순서대로 값을 가져와 반복해서 수행할 때 이용
    배열이 가지고 있는 값을 이용해서 반복 실행하는 예
    배열에 들어 있는 값을 순서대로 가져오다가 마지막 값을 가져오면 반복을 종료


    using System;

    namespace jkstest
    {
     class arraytest
     {
      static void Main()
      {
       string[] str = { "red", "sex", "man", "girl", "an" };

       foreach(string a in str)
       {
        Console.WriteLine("{0}", a);
       }
      }
     }
    }



    메서드 오버로딩 
    메서드 오버로딩은 나중에 클래스 생성자를 정의할 때 유용하게 사용
    생성자 이름은 클래스 이름과 같아야 하는데, 여러 개 생성자를 정의해야 하는 경우
    class Point
       {
           public Point() {...}
           public Point( int x, int y ) {...}
           public Point( Point pt ) {...}
       }



     

         가변 인자
    메서드에서 가변적으로 변하는 인자를 받아들이기 위해 params 키워드를 이용하면,
     
    메서드가 취하는 인자 개수에 제한 없이 메서드를 구현
    메서드가 정수 인자 리스트를 배열로 받아오는 예



    using System;

    class arraytest
    {
     static void Main()
     {
    // 가변 인자를 받아들이는 메서드에 콤마를 이용해서 인자를 구분해서 넣어줄 수도 있고,
    // 배열을 넘겨줄 수도 있다

      Show(1,2,3);
      Show(1223,6784,1543,23);
      Show(new int[3] { 75,21,64});  
     }
     static void Show(params int[] args)
     {
       for (int i = 0; i < args.Length; i++)
       Console.WriteLine(args[i] +",");
     }
    }
     

           object 형을 가변 인자로 쓰면 어떤 데이터형 이라도 인자로 받아들일 수 있다 

     
    Show 메서드는 object 형 인자 리스트를 받아들이도록 구현한 예


    메서드

    가변 인자
    메서드에서 가변적으로 변하는 인자를 받아들이기 위해 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 형 인자 리스트를 받아들이도록 구현한 예


    using System;

    class arraytest
    {
     static void Main()
     {
      test(1,'c', "string ");
     }
     static void test(params object[] aaa)
     {
      for (int i = 0; i < aaa.Length; i++)
       Console.WriteLine("{0}",(object)aaa[i]);
     } 
    }










     

    반응형

    댓글

Designed by Tistory.