2011. 5. 31. 18:13

C# 배열 & 연산자

    protected void Page_Load(object sender, EventArgs e)
    {
         int[] array = new int [5];

        for (int i = 0; i < array.Length; i++)
        {
            array[i] = i * 100;
            Response.Write("array{"+i+"}="+array[i]);
            Response.Write("<br>");
        }
           
    }


array{0}=0
array{1}=100
array{2}=200
array{3}=300
array{4}=400


배열의 크기는 array.Leangth 값으로 구할 수 있습니다. 이 프로퍼티를 이용하면 for 문과 같은 반복문 수행 시 유용합니다.
인덱스 범위는 0부터 length-1까지 입니다.


* 배열 초기화
배열을 선언과 초기화를 같이 하는 경우 컴파일러가 데이터형과 개수를 알 수 있기 때문에 크기를 생략하고 선언 할 수 있습니다.

int [] array = {1,2,3,4,5};


다음 배열을 선언하고 나중에 메모리를 할당하는 예입니다. 초기화 과정에서 new 연산자를 이용하여 메모리를 할당하는 과정이 필요합니다.

int [] array;
array = new int [] {1,2,3,4,5};

array = {1,2,3,4,5,};//이렇게 쓸수는 없음.


string 형 배열도 정수형과 마찬가지 방식으로 배열을 선언하고 초기화 합니다.

string[] sarray = {"first", "second", "third'};
//값을 나중에 초기화한 경우

string[] asrray;
sarray = new string [] { "first", "second", "third"};


* Array 객체
   C# 언어에서 배열은 고유한 데이터 형입니다. Array 객체는 배열에서 사용할 수 있는 다양한 메서드와 멤버를 제공합니다.
              int length = arr.Length;  //배열 길이

메서드                         설명
Sort                            배열에 있는 요소 값을 정렬합니다.
Reverse                      배열에 요소 값을 거꾸로 배치합니다.
IndexOf                       배열의 처음부터 값을 찾기 시작해서 맨 처음 갖은 값의 위치를 알려줍니다.
LastIndex                    배열의 끝에서부터 거꾸로 찾아서 위치를 알려줍니다.
BinarySearch               배열에서 binary serach를 수행합니다.




   //배열선언
        string[] arr = { "zoo", "bear", "car", "apple" };
        //배열정렬
        Array.Sort(arr);
        for (int i = 0; i < arr.Length; i++)
        {
            Response.Write("arr{" + i + "}=" + arr[i]);
            Response.Write("<br>");
        }
arr{0}=apple
arr{1}=bear
 arr{2}=car
 arr{3}=zoo


* foreach문
  
위의 예제와 같이 for 문을 이용해서 배열 값을 보일 수도 있고, foreach 문을 이용할 수도 있습니다. foreach 문은 배열의 처음 부터 순서대로 값을 보여줍니다. 인덱스 값을 따로 지정할 필요가 없습니다.

   
foreach(string str in arr)
{
     Response.Write(str);
}



    * 다차원배열
 
      콤마(,)를 넣어서 구분합니다.

          int[,] array;   // 2차원 배열
          int[,,] array;   // 3차원 배열

        //2차원 배열 선언
        int[,] array;
        //배열에 메모리 할당
        array = new int[3, 3];
        //배열에 값 할당, 인덱스 범위 array[0..2, 0..2]
        array[0, 0] = 100;
        int value = array[0, 0];


-> 다차원 배열 초기화
    배열을 선언하면서 바로 요소 값을 초기화할 수도 있습니다. 값을 정의하는 각 열마다{,}를 이용해서 구분해줍니다.
   다음 두 문장은 같은 배열을 선언하는 코드 입니다. new int [,] 은 마찬가지로 생략할 수 있습니다.

int[,] array = new int [,]{{1,2,3},{4,5,6}};
int[,] array = {{1,2,3},{4,5,6}};

* 연산자(C# 연산자)
   
   연산순위                                    연산자
기본 연산자                (x) x,y f(x) a[x] x++ x-- new typeof sizeof checked unchecked
단일 연산자                 + - ! ~ ++x --x (T)x
곱셈/나눗셈                 * / %
덧셈/뺄셈                    +-
시프트 연산자              <<>>
비교연산자                  <> <= >= ㅑㄴ
비교연산자                   == !=
비트 연산자 AND           &
비트연산자 XOR            ^
비트 연산자 OR             |
논리 연산자 AND           &&
논리 연산자 OR             ||
조건 연산자                  ?:
할당 연산자                  = *= /= %= += -= <<= >>= &= ^= |=



-> ++ / --
 int x = 2;
Response.Write(x++); //출력 값 : 2

int x = 2;
Response.Write(++x);  //출력 값 : 3


->  ?:
int x = 5;
Response.Write((x<0) ? '음수' : "양소 또는 0");


   ->is 연산자
        object obj = "Hi, there!";
        if (obj is string) // string 형인가?
            Response.Write("obj 객체는 string 형입니다. <br>");

   -> as 연산자
        string s = obj as string; //string 형 변환
        if (s != null)
            Response.Write("obj 객체는 " + s + "입니다.");



       
obj 객체는 string 형입니다.
obj 객체는 Hi, there!입니다.