본문 바로가기
Development/Group Study

[Part 1] 섹션 3. 코드의 흐름 제어(2)

by Mobics 2025. 7. 25.

 

목차


    C#과 유니티로 만드는 MMORPG 게임 개발 시리즈

    25.07.24

    Part 1: C# 기초 프로그래밍 입문

     

    섹션 3. 코드의 흐름 제어

     

    while

    : 조건문이 false가 될 때까지 계속해서 반복한다. --> while을 사용할 때는 무한 루프에 빠지지 않도록 주의해야 한다.

    while(조건문)
    {
    
    }

     

    >> do while문

    : 1번은 무조건 명령문을 실행한 다음 조건문을 확인하여 반복할지 말지 결정한다.

    do
    {
    	명령문
    } while (조건문)

     

    for

    • 초기화식 : 반복하기 전에 한 번만 실행되는 식이다. 일반적으로 해당 반복문에서 로컬 변수를 선언하고 초기화한다.
    • 조건식 : 다음 반복을 실행해야 하는지 여부를 결정하는 식이다. true이거나 존재하지 않으면 다음 반복이 실행된다.
    • 반복식 : 반복을 실행할 때마다 발생하는 일을 정의하는 식이다.

    --> for 반복문 실행 순서 : (조건식이 true라면) 초기화식 -> 조건식 -> 명령문 -> 반복식

    for (초기화식; 조건식; 반복식)
    {
    	명령문
    }

     

    --> 초기화식, 조건식, 반복식을 반드시 다 채워야하는 것은 아니며 선택 사항이다.

     

     

    반복문 - for, foreach, do, while - C# reference

    C# 반복 문(for, foreach, do 및 while)은 코드 블록을 반복적으로 실행합니다. 이러한 문을 사용하여 루프를 만들거나 컬렉션을 반복합니다.

    learn.microsoft.com

     

    break, continue

    • break : 가장 가까운 바깥쪽 반복문 또는 switch 문을 종료한다.
    • continue : 가장 가까운 바깥쪽 반복문의 새로운 반복을 시작한다.
     

    점프 문 - break, continue, return 및 goto - C# reference

    C# 점프 문(break, continue, return 및 goto)은 현재 위치에서 다른 문으로 컨트롤을 무조건 전달합니다.

    learn.microsoft.com

     

    함수 (Method)

    : class, struct, interface 안에서 선언해야하며, 접근 수준, 선택적 한정자, 반환 값, 메서드 이름 및 매개 변수를 지정하여 선언한다.

    • 접근 수준 : private, protected, public 등
    • 선택적 한정자 : static, abstract, sealed 등
    • 반환 값 : void, int, bool 등
    • 매개변수 : 빈 괄호는 매개 변수가 없음을 의미하고, 매개 변수가 여러 개라면 ',' 로 구분한다.
    class Example
    {
        //접근수준 한정자 반환값 이름(매개변수)
        private static void HelloWorld()
        {
        	
        }
    }

     

    >> 주의할 점 

    : 매개변수로 값을 넘길 때 참조가 아니라 복사하여 넘긴다.

     

    - 예시

    namespace First
    {
        class Program
        {
            static void AddOne(int number)
            {
                number++;
            }
    
            static void Main(string[] args)
            {
                int a = 0;
                Program.AddOne(a);
    
                Console.WriteLine(a);
            }
        }
    }

    --> 실행 결과

     

     

    메서드 - C#

    C#의 메서드는 일련의 문을 포함하는 코드 블록입니다. 프로그램은 메서드를 호출하고 인수를 지정하여 문을 실행합니다.

    learn.microsoft.com

     

    ref, out

    >> ref

    : 함수를 호출할 때 매개변수로 값을 참조하여 가져온다.

    --> 함수를 선언하는 매개변수와 함수를 호출할 때의 값 모두 'ref' 를 적어야 한다.

    namespace First
    {
        class Program
        {
            private void Test(ref int number)
    	{
    
    	}
    
            static void Main(string[] args)
            {
                int a = 0;
                Program.Test(ref a)
            }
        }
    }

     

    ※ 주의할 점

    : 위에 작성한 'Test' 함수처럼 ref로 number를 선언했음에도 Test 함수 내에서 number를 사용하지 않아도 문제가 되지 않는다.

     

     

    'ref' 키워드의 여러 용도 - C# reference

    'ref' 키워드에 대한 다양한 용도를 이해하고 해당 용도에 대한 자세한 정보를 가져옵니다.

    learn.microsoft.com

     

    >> ref vs return

    • 'ref' 를 사용하면 실제 변수를 참조하여 값을 변환시키기 때문에 정말 그 변수의 값을 수정해야할 때 사용하는 것이 좋다. ex) Swap
    • 'return' 을 사용하면 매개변수로 값만 복사하여 사용하기 때문에 임시로 값을 테스트하기 좋고, 결과값을 다시 필요한 곳에 사용하기에도 용이하다.

    - 예시 1

    : 아래 코드에서 'AddOne' 함수를 사용했을 때와 'AddOne2' 함수를 사용했을 때 모두 동일하게 a값을 1 증가시키는 결과를 내지만, 'AddOne2' 함수를 사용했을 때는 테스트값인 'b'를 통해서 a값을 조정할 수 있다.

    namespace First
    {
        class Program
        {
            static void AddOne(ref int number)
            {
                number++;
            }
    
            static int AddOne2(int number)
            {
                return number + 1;
            }
    
            static void Main(string[] args)
            {
                int a = 0;
                Program.AddOne(ref a);
                Console.WriteLine(a);
    			
                int b = Program.AddOne2(a);
                a = b
                Console.WriteLine(a);
            }
        }
    }

     

    - 예시 2

    : 아래 코드에서 'a' 와 'b' 값을 바꾸는 함수인 Swap을 만들 때는 실제 'a'와 'b' 값을 바꿔야하기 때문에 'ref' 를 사용하는 것이 좋다.

     

     

    >> out

    : 복사가 아닌 참조로 함수의 매개변수로 전달할 수 있도록 한다.

    --> 함수를 선언하는 매개변수와 함수를 호출할 때의 값 모두 'out' 을 적어야 한다.

    • 'out'은 둘 이상의 out 매개변수를 사용할 수 있으므로 함수가 둘 이상의 값을 반환해야 하는 경우에 특히 유용하다.
    • 반드시 함수 내에서 out 매개변수를 사용해야 한다.

    - 예시

    namespace First
    {
        class Program
        {
            static void Divide(int a, int b, out int result1, out int result2)
            {
                result1 = a / b;
                result2 = a % b;
            }
    
            static void Main(string[] args)
            {
                int x = 10;
                int y = 3;
                int result1;
                int result2;
                Divide(x, y, out result1, out result2);
    
                Console.WriteLine(result1);
                Console.WriteLine(result2);
            }
        }
    }

     

     

    out 키워드 - C# reference

    out 키워드 - C# 참조

    learn.microsoft.com

     

    오버로딩

    : 함수 이름의 재사용 즉, 하나의 이름으로 여러 개의 함수를 만드는 것이다.

    --> 오버로딩을 활용하기 위해서는 매개변수의 개수 또는 타입을 다르게 정의해야 한다.

    private int Add(int a, int b)
    {
        return a + b;
    }
    
    private float Add(float a, float b)
    {
        return a + b;
    }
    
    private int Add(int a, int b, int c)
    {
        return a + b + c;
    }

     

    >> 선택적 매개변수

    : 매개변수를 선언할 때부터 값을 넣어서 함수를 호출할 때 해당 매개변수를 넣지 않는다면 설정한 기본값을 사용한다.

     

    - 예시

    : 아래 코드는 'ExampleMethod'의 매개변수로 하나의 필수 매개변수와 두 개의 선택적 매개변수가 들어있다.

    --> 이 함수를 호출할 때, 두 번째 매개변수는 기본값을 사용하고 세 번째 매개변수는 따로 지정해서 호출하고자 한다면 세 번째 매개변수의 이름을 명명해야 한다. 즉, 원하는 매개변수 값을 넣고자 한다면 그 매개변수의 이름을 명명하면 된다.

    public void ExampleMethod(int required, string optionalstr = "default string",
        int optionalint = 10)
    {
    }
    
    static void Main(string[] args)
    {
        // anExample.ExampleMethod(3, ,4); --> 컴파일러 에러 발생
        anExample.ExampleMethod(3, optionalint: 4);
    }

     

     

     

    명명된 인수 및 선택적 인수 - C#

    C#의 명명된 인수는 위치가 아닌 이름으로 인수를 지정합니다. 선택적 인수는 생략할 수 있습니다.

    learn.microsoft.com

    'Development > Group Study' 카테고리의 다른 글

    [Part 1] 섹션 4. TextRPG  (1) 2025.07.26
    [Part 1] 섹션 3. 코드의 흐름 제어(1)  (2) 2025.07.24
    [Part 1] 섹션 2. 데이터 갖고 놀기  (4) 2025.07.23