본문 바로가기

.NET/C# Basic

static정적맴버 배열 연산자 is/as foreach 문 메서드 오버로딩 메서드 가변 인자

반응형



정적(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]);
 } 
}