- 다음 내용은 Unity 퀘스트 모음집 \ C# 사전 문법 기초 \ 함수 페이지들을 학습하고 작성되었습니다.
기본
- 함수 : 필요한 기능을 미리 정의해둔 코드의 모음
- 형태 :
반환 형식 함수 이름 (매개변수)
{
함수 내용
}
- 반환 형식 : 함수 반환 값의 형식, 반환 값이 없으면 void
- 함수 이름 : 함수가 어떤 기능을 하는지 알 수 있도록 짓는 것을 권장
- 매개 변수 : 함수에 전달되는 값
/* 함수부 */
// 함수 정의
void PrintFunc()
{
Console.WriteLine("Function String");
}
/* 로직부 */
Console.WriteLine("Hello World!");
Console.WriteLine("Program Running");
PrintFunc(); // 함수 호출
Hello World!
Program Running
Function String
- 위 출력에서 보듯 함수를 정의한다고 해서 실행되지는 않음
- 함수가 필요할 때 호출하여 사용
- 로직부와 함수부를 나누어 가독성 높이기
Return
- 함수의 실행을 멈추고 싶다면 return 키워드 사용
- (ex) 체력이 0일때까지 공격하는 로직
int hp = 3;
Attack(); // 함수 호출
void Attack()
{
while (true)
{
// hp가 1보다 작으면 함수 종료
if (hp < 1)
{
return;
}
--hp; // 증감식
Console.WriteLine("damage : 1 hp : " + hp);
}
}
return과 반환 형식
- 반환되는 데이터의 형식과 함수 헤더의 반환 형식이 동일해야 함
int num = GetNum(); // OK : 반환된 값(10)과 변수(int)의 데이터 형식 동일
string numStr = GetNum(); // ERR : 반환된 값(10)과 변수(string)의 데이터 형식 다름
int GetNum()
{
return 10;
}
매개 변수
- 함수에 값을 넘겨주는 역할
- 함수 정의에 매개 변수가 없으면, 함수 호출 시 매개 변수 사용 불가
- 함수 정의에 매개 변수가 있으면, 함수 호출 시 인자 필요
- 매개 변수와 인자는 동일한 타입이어야 함
- 하나의 함수에 여러 개의 매개 변수 설정 가능
void DisplayInfo(string id, int level)
{
Console.WriteLine("ID : " + id + " LV : " + level);
}
void PrintPray()
{
Console.WriteLine("Always be ready to praise the GOAT");
}
/* 모범 예시 */
DisplayInfo("Hide on bush", 100);
DisplayInfo("Noob", 1);
PrintPray();
/* 잘못된 예시 */
// 매개 변수가 없는 함수에 인자를 넘김
PrintPray(1);
// 매개 변수와 인자의 타입 불일치
DisplayInfo(2, 1);
// 필요한 인자를 넘기지 않음
DisplayInfo(1);
DisplayInfo();
ID : Hide on bush LV : 100
ID : Noob LV : 1
Always be ready to praise the GOAT
네이밍 규칙 - 코딩 스탠다드
- 협업에서 다른 사람이 작성한 코드를 쉽게 이해할 수 있도록 정의해놓은 규칙
- 코딩 스탠다드를 준수하면 가독성이 높아지고 공동 코드 작업에서 통일성 유지
- 변수, 클래스, 함수이름에는 공백이 들어갈 수 없므로 대소문자 구분으로 가독성 향상
카멜 케이스
- 소문자로 시작하며 띄어쓰기 필요한 단어 첫 스펠링 대문자
- 주로 변수이름에 사용
파스칼 케이스
- 대문자로 시작하며 띄어쓰기 필요한 단어 첫 스펠링 대문자
- 주로 클래스나 함수 이름에 사용
void PrintName(string name) // 파스칼 케이스(함수 이름)
{
Console.WriteLine(name);
}
string myName = "홍길동"; // 카멜 케이스(변수 이름)
PrintName(myName);
참고 자료:
https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/coding-style/coding-conventions
if 문과 return
- 모든 제어 경로에 반환 값이 정해져야 함
- 특정 조건에서 return한 경우 다른 조건에서 누락된 return이 없는지 확인
int score = 5;
int GetPoint()
{
// 점수가 100 이상일 경우는 반환 값이 있지만
if (score >= 100)
{
return 200;
}
// 이후에 return 없으면 ERROR!
// CS0161 : 코드 경로 중 일부만 값 반환
// 점수가 100 미만인 경우의 반환 값 없음, 기본적인 반환값 필요
// 반환 형식에 맞추어 설정해주기
return 0;
}'내일배움캠프 > IL' 카테고리의 다른 글
| [내배캠][Unity_6기][IL] C# 추가 학습 (0) | 2024.08.31 |
|---|---|
| [내배캠][Unity_6기][IL] C# 클래스와 객체 (0) | 2024.08.31 |
| [내배캠][Unity_6기][IL] C# 배열 (0) | 2024.08.30 |
| [내배캠][Unity_6기][IL] C# 제어문 (0) | 2024.08.30 |
| [내배캠][Unity_6기][IL] C# 연산자 (0) | 2024.08.30 |