목차
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 |