SSISO Community

갤러리정

배열메소드 - CSharp

Sort / Reverse
-  배열의 항목을 오름차순 or 내림차순으로 정렬
-  정적메소드
- System.Array.Sort(배열객체)
- System.Array.Reverse(배열객체)

 

 public static void ArrayMethod()
 {
      int[] row = new int[10] {23,45,1,4,98,22,6,16,23,48};

      Console.Write("Source : \t\t");
      ArrayPrint(row);


      //오름차순정렬
      Array.Sort(row);
      Console.Write("Sort : \t\t");
      ArrayPrint(row);

 

      //내림차순정렬
      Array.Reverse(row);
      Console.Write("Reverse : \t\t");
      ArrayPrint(row);

 }

 

 public static void ArrayPrint(int[] row)
 {
      for(int i=0;i<row.Length;i++)
      {
          Console.Write("{0,3}", row[i]);
      }
      Console.WriteLine();
 }

 

Clear
- 배열의 요소들을 0 or null로 초기화
- 배열자체는 남아있다.
- System.Array.Clear(배열명, 시작인덱스, 길이)

 

  int[] row = new int[10] {23,45,1,4,98,22,6,16,23,48};

  Console.Write("Source :\t");
  for(int i=0;i<row.Length;i++)
  {
   Console.Write("{0,3}", row[i]);
  }
  Console.WriteLine();

 

  //Clear
  Array.Clear(row,3,1); //3번째부터 1개 clear
  //Array.Clear(row,6,5); //6번째부터 5개 clear -> 인덱스가 배열을 넘어가므로 에러


  Console.Write("3-1 :\t\t");
  for(int i=0;i<row.Length;i++)
  {
   Console.Write("{0,3}", row[i]);
  }
  Console.WriteLine();

 

  Array.Clear(row,0,row.Length);
  Console.Write("0-Length :\t");
  for(int i=0;i<row.Length;i++)
  {
   Console.Write("{0,3}", row[i]);
  }
  Console.WriteLine();

 

Clone
- 배열의 복사본 생성(전체복사)
- 동일한 요소를 가지는 또 하나이 배열 객체 생성

 

        //배열복사
        public static void arrayClone()
        {
            int [] row = {0,1,2,3};
            int [] copyRow = (int[]) row.Clone();
            //원본을 복사해서 또하나의 다른 배열을 만든다. row와 copyRow는 별개.


            //int [] copyRow = row.Clone();
            //에러, Clone자체가 오브젝트로 반환을 시키기 때문에 형변환을 꼭 해주어야 한다.

 

            /*
             * int [] copyArray = row;

             * row배열의 참조변수를 복사하기 때문에 row와 copyArray는 같은 배열을 가르킴
             * copyArray[0] = 100; 

             * 복사본의 값을 변경시키면 row와 copyArray의 배열값은 같이 변경됨

             */

 

            Console.Write("\nSource :\t");
            for(int i=0;i<row.Length;i++)
            {
                Console.Write("{0,3}", row[i]);
            }
            Console.WriteLine();

 

            Console.Write("\nCopy :\t");
            for(int i=0;i<copyRow.Length;i++)
            {
                Console.Write("{0,3}", copyRow[i]);
            }
            Console.WriteLine();

        }


GetLength : 해당차원의 길이 변환
GetLowerBound : 해당차원의 시작첨자 반환
GetUpperBound : 해당차원의 끝 첨자 반환

 

   int [] row = {0,1,2,3};
   Console.WriteLine("GetLength : {0}", row.GetLength(0));      // 4
   Console.WriteLine("GetLowerUbound : {0}", row.GetLowerBound(0)); // 0
   Console.WriteLine("GetUpperUbound : {0}", row.GetUpperBound(0));  // 3

 

IndexOf / LastIndexOf
- 배열에서 지정된 값을 검색, 위치값을 돌려준다.
- 검색된 값이 없거나 실패하면 -1리턴
- IndexOf(배열명, 검색인자)
- LastIndexOf(배열명, 검색인자)

 

         public static void arrayIndexOf()
        {
            //배열안에서 특정위치값 찾기
            int[] row = new int[10] {23,45,1,4,32,22,6,32,23,48};

            int firstSearch, lastSearch;
            firstSearch =  Array.IndexOf(row, 32);          //배열의 앞에서 부터 찾는다.  결과 : 4
            lastSearch = Array.LastIndexOf(row, 32);     //배열의 뒤에서 부터 찾는다.  결과 : 7

            Console.Write("Source : ");
            for(int i=0;i<row.Length;i++)
            {
                Console.Write("{0,3}", row[i]);
            }


            Console.WriteLine();
            Console.WriteLine("IndexOf : 32의 위치값은 {0}", firstSearch);
            Console.WriteLine("LastIndexOf : 32의 위치값은 {0}", lastSearch);

        }

메소드에서의 배열사용
- 배열의 입력 인자로 사용
   참조형이라 Call By Reference로 적용
- 메소드의 반환값으로 사용
   하나이상의 값을 반환시...

 

        public static void MethodArrary()
        {
            int [] row = {1,2,3,4,5};

            Console.WriteLine("Main내 메소드 실행전 : " + row[0]);
            callArrayMethod(row);
            Console.WriteLine("Main내 메소드 실행후 : " + row[0]);

            Console.WriteLine("--------------------------------------");

            Console.WriteLine("Main내 메소드 실행전 : " + row[0]);
            callArrayMethod((int[])row.Clone());
            Console.WriteLine("Main내 메소드 실행후 : " + row[0]);

            Console.WriteLine("--------------------------------------");

            callArrayMethod(new int[4] {2,3,4,5});

        }

        public static void callArrayMethod(int[] row2)
        {
            row2[0]++;
            Console.WriteLine("배열의 Clone하여 메소드로 넘겼을때 메소드 내 : " + row2[0]);

        }

 

커맨드 라인 입력 인자
- 콘솔에서 실행파일 다음에 인자전달(Main에게...)
- 보통옵션값으로 사용한다.

- static void Main(string[] args){
               for(int i=0; i<args.Length;i++)
                {
                        Console.WriteLine(args[i]);
                }
        }


  ex)  c:\csc Test.cs
 

배열예외처리
- 보통 배열첨자 범위를 벗아난 예외발생
- IndexOutOfRangeException


733 view

4.0 stars