[C#] 배열과 foreach문(반복)

728x90

1. 배열

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //배열의 선언.
            string[] cars = new string[10]; //배열의 개수는 10개, 타입은 string
            Console.WriteLine(cars.Length);

            //배열의 선언과 동시에 초기화.
            string[] food = { "사과", "바나나", "파인애플", "수박" };

            //int형의 배열생성.
            int[] myNum = { 10, 20, 30, 40, 50 };

            //배열의 요소에 접근하기.
            //배열요소가 위치하는 숫자를 적어준다.
            Console.WriteLine("첫번째 값을 뽑아보자:" + food[0]);
            Console.WriteLine("세번째 값을 뽑아보자:" + food[2]);
            Console.WriteLine("네번째 값을 뽑아보자:" + food[3]);

            //배열의 요소변경하기.
            food[0] = "밀감";
            Console.WriteLine("변경된 값을 뽑아보자:" + food[0]);

            //배열의 길이얻기.
            Console.WriteLine("배열의 길이는?" + food.Length);

            //2차원배열의 선언과 초기화
            //열의 크기가 동일해야된다.
            //오류예제:
            //int[,] myNums = { { 1, 2, 3, 4 }, { 5, 6, 7 } };
            //열의크기4로 동일하게하면 오류가 사라진다.

            //2차원 배열은 대괄호안에 콤마(,)를 입력한다.
            int[,] myNums = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };
            int arrayValue = myNums[0, 2]; //2
            Console.WriteLine("바깥배열 인덱스=0, 내부배열 인덱스=2의 값:" + arrayValue);

            //가변배열-> 2차원 배열을 선언할때는 내부배열의 크기를 전부 동일하게 해야하지만, 가변배열을 사용할때는 내부 배열의 열크기를 다르게 할 수 있다.
            //추가할 1차원배열크기 필수로입력.
            int[][] myNums2 = new int[4][];
            myNums2[0] = new int[2] { 1, 2 }; // {{1,2},...,....,....}
            myNums2[1] = new int[3] { 3, 4, 5 }; // {{1,2},{3,4,5}}
            myNums2[2] = new int[4] { 6, 7, 8, 9 };//{{1,2},{3,4,5,},{6,7,8,9}}
            myNums2[3] = new int[2]; //값이 없다면 0으로 초기화됨 -> {{1,2},{3,4,5,},{6,7,8,9},{0,0}}

            //int var2 = myNums2[0,1];
            Console.WriteLine(myNums2.Length);
            int inlineArray = myNums2[2][3];
            Console.WriteLine("inlineArray: " + inlineArray);
        }
    }
}

2. foreach문

C# foreach 문은 배열이나 컬렉션에 주로 사용하는데, 컬렉션의 각 요소를 하나씩 꺼내와서 foreach 루프 내의 블럭을 실행할 때 사용됩니다.

 

사용방법은 아래와 같습니다.

foreach(타입 변수명 in 배열)
{
	
}

 

아래 예제를 보겠습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



namespace ConsoleApp1
{
    class Program
    {
        enum Month
        {
            January = 1, 
            February, 
            March, 
            April, 
            May, 
            June, 
            July, 
            August, 
            September, 
            October, 
            November, 
            December

        };

        static void Main(string[] args)
        {
            Console.WriteLine("1차원 배열 출력");
            int[] arr = new int[7] { 1, 2, 3, 4, 5, 6, 7 };

            //foreach문
            Console.WriteLine("foreach문으로 반복");
            int index = 0;
            foreach (int a in arr)
            {
                Console.WriteLine(index + "번째 값: " + a);
                index++;
            }

            Console.WriteLine();
            //for문
            Console.WriteLine("for문으로 반복");
            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine(i + "번째 값: " + arr[i]);
            }

            //출력 0번째 값: 1
            //     1번째 값: 2
            //     2번째 값: 3
            //     3번째 값: 4
            //     4번째 값: 5
            //     5번째 값: 6
            //     6번째 값: 7

            Console.WriteLine();

            Console.WriteLine("2차원 배열 출력");
            int[,] arr2 = new int[4, 3]
            {
                { 10, 11, 12 },
                { 20, 21, 22 },
                { 30, 31, 32 },
                { 40, 41, 42 }

            };

            //foreach문
            int index2 = 0;
            foreach(int b in arr2)
            {
                Console.WriteLine(index2+"번째 값: "+b);
                index2++;
            }

            //출력->0번째 값: 10
               /*   1번째 값: 11
                    2번째 값: 12
                    3번째 값: 20
                    4번째 값: 21
                    5번째 값: 22
                    6번째 값: 30
                    7번째 값: 31
                    8번째 값: 32
                    9번째 값: 40
                   10번째 값: 41  
                   11번째 값: 42
               */

            Console.WriteLine();
            //for문

            for(int i = 0; i < 4; i++)
            {
                for(int j=0;j<3;j++)
                {
                    Console.WriteLine("배열["+i+"]["+j+"]의 값: " + arr2[i,j]);
                }
            }

            //출력 ->   배열[0][0]의 값: 10
            /*    배열[0][1]의 값: 11
                  배열[0][2]의 값: 12
                  배열[1][0]의 값: 20
                  배열[1][1]의 값: 21
                  배열[1][2]의 값: 22
                  배열[2][0]의 값: 30
                  배열[2][1]의 값: 31
                  배열[2][2]의 값: 32
                  배열[3][0]의 값: 40
                  배열[3][1]의 값: 41
                  배열[3][2]의 값: 42
            */
            Console.WriteLine() ;

            //열거형 출력 ->Enum.GetValues()
            foreach (int c in Enum.GetValues(typeof(Month)))
            {
                Console.WriteLine(c+"월");
            }

           /* 
            출력 -> 1월
                    2월
                    3월
                    4월
                    5월
                    6월
                    7월
                    8월
                    9월
                    10월
                    11월
                    12월
           */


            Console.WriteLine() ;   
            //열거형 출력 ->Enum.GetNames()
            foreach (string d in Enum.GetNames(typeof(Month)))
            {
                Console.WriteLine(d);
            }
            /*
            출력 -> January
                    February
                    March
                    April   
                    May
                    June
                    July
                    August
                    September
                    October
                    November
                    December
            */

        }
    }
}

 

'C# Programming > C#' 카테고리의 다른 글

[C#] 데이터 베이스 연결 및 기본 CRUD  (1) 2024.05.14
[C#] 객체지향 프로그래밍  (0) 2024.05.14
[C#] 비트 연산자  (0) 2024.05.13
C# 설치 및 환경설정  (1) 2024.05.13
C#이란?  (0) 2024.05.13