일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 유니티
- c# 백준
- 티스토리챌린지
- c#코테
- c#기초문법
- Console.WriteLine
- unity게임
- 시샵
- c#문제
- 스파르타코딩클럽
- unity공부
- unity3d게임만들기
- c# c#프로그래머스
- 시샵문법
- 유니티3dui
- unity3dservival
- 유니티게임만들기
- 오블완
- 유니티서바이벌게임만들기
- unity게임만들기
- c#코딩기초트레이닝
- unity3d
- 스파르타
- 유니티공부
- c#프로그래머스기초문법
- 유니티상호작용
- c#기본문법
- C#문법
- Unity
- c#
- Today
- Total
나 개발자 진짜 되냐?
[ C# 기본 문법 12 ] 메서드 본문
늘
메서드
인스턴스
구조체
객체
이런 거 너무 헷갈려서 힘들었는데
이번기회에 제대로
기본을 잡아보는 시간이 되었으면 좋겠다..ㅎㅎ
🌟 메서드 🌟
메서드 ( Method )는
일련의 코드 블록으로
특정한 작업을 수행하기 위해 사용되는 독립적인 기능 단위
..ㅇㅅㅇ? 뭐라고요?
간단하게 정리하면!
함수라는 친구로 해석해 주면 된다!
음..
사이클이라고 생각해도 편할 거 같은데
하루에 아침 먹기 점심 먹기 저녁 먹기
이 세 가지를 매일 하는 것을 코드에 적는다면
코드가 굉장히 길어지겠죠?
그래서 먹기
안에 아침 점심 저녁을 적어주고
하루 - 먹기라고 하면
아침점심저녁이 다 포함된 코드를 짤 수 있다.
이렇게 하나의 주머니, 사이클이라고 생각해 주면
편하다!
✨ 메서드 선언 ✨
[접근 제한자] [리턴 타입] [메서드 이름]([매개변수])
{
// 메서드 실행 코드
}
1. 접근 제한자
접근 범위를 정한다.
Public, Private, Protected가 있다.
public : 클래스 외부 접근 가능
private : 클래스 내부 만 접근
protected : 연결고리가 있는 친구만 접근
2. 리턴 타입
메서드가 반환하는 값의 데이터 타입 지정
보통 void( 공허, 없다 ) 사용
3. 메서드 이름
메서드 호출을 위해 사용하는 이름,
즉 호출될 땐 이름을 부른다!
4. 매개 변수 ⭐
자주 들어봤을 파라미터 라는 친구가
매개변수!!
메서드에 전달되는 입력 값으로
필요한 경우 개수 제한은 없다!
5. 메서드 실행 코드
중괄호 안에 메서드가 수행할 코드 작성
✨ 메서드 호출방법 ✨
[메서드 이름]([전달할 매개변수]);
// Ex) Numbers(10, 20);
콜 하는 방법이라고 말하는데
메서드 이름 (매개변수가 있다면 쓰고 아니면 공백)
을 해주면
메서드 이름을 보고 메서드로 가서 실행해 준다.
뭐 간단히
아까 예시로 든
먹기()이라는 느낌?
호출 시 주의할 점은
1. 매개변수의 순서와 타입은 일치해야 한다.
2. 필요한 경우 리턴값이 있다면 꼭 반환해주어야 한다.
반환..?! 그게 뭐지?!?!
✨ 매개변수 그리고 반환값 ✨
매개변수는 메서드에 전달되는 입력값으로
메서드 내에서 이 값을 활용해서 작업을 수행한다.
매개변수는 메서드의 선언부
즉 () 안에서 정의된다.
그러다 보니 동적으로 결정된다.
void PrintFullName(string firstName, string lastName)
{
Console.WriteLine("Full Name: " + firstName + " " + lastName);
}
// 메서드 호출
PrintFullName("John", "Doe");
예제를 보면 알다시피
string로 자료형을 걸어주는 것이 중요하다.
호출을 통해
firstName = John
lastName = Doe
가 된다.
자 그러면 반환값은 뭐냐!
메서드를 수행하고 난 후에 결괏값을
콜 부른 애한테 돌려주는 것을 의미한다.
뭘로 주냐?
return으로!!!
int AddNumbers(int a, int b)
{
int sum = a + b;
return sum;
} //return sum을 통해 int로 변환 후 반환
// 메서드 호출 및 반환값 사용
int result = AddNumbers(10, 20);
Console.WriteLine("Sum: " + result);
return 덕분에
값을 다른 친구에게 넘겨줄 수 있다.
void형을 제외한 모든 메서드에는 return값이 있어야 하고
그 이유는
메서드는 탈출하고 나면 그 할당된 변수들이 다 사라진다.
그렇기 때문에
우리는 return으로 값을 적어두고 나와야지만
안에 내용은 사라져도 값은 보관되어 있다.
return을 통해
값을 자료형으로 변환해서 밖으로 내보낼 수 있게 된다.
단 void에는 절대적으로 쓰면 안 된다.
이것이 약속!
왜?
아까 return은 자료형을 변환해서 밖으로 내보낸다
근데 void는 공허..
아무것도 못 들고나가니
나가봤자다.
그래서 void는 출력용이라고 생각해 주면 편하다!
✨ 메서드 오버로딩 ✨
메서드의 이름은 같은데 다른 동작을 하는 친구들을 말한다.
오버로딩을 할 때 중요한 점은
1.
기능이나 작업은 동일해야 한다는 점이다.
즉 계산을 하려면 계산이 같아야 하고
출력을 하려면 둘 다 출력을 해야 한다.
2.
매개변수는 달라야 한다.
타입이든 개수든 순서든 뭐든 하나는 달라야 한다.
3.
반환할 자료형은 달라도 문제없다.
//매개변수 타입이 다름
void PrintMessage(string message)
{
Console.WriteLine("Message: " + message);
}
void PrintMessage(int number)
{
Console.WriteLine("Number: " + number);
}
// 메서드 호출
PrintMessage("Hello, World!"); // 문자열 매개변수를 가진 메서드 호출
PrintMessage(10); // 정수 매개변수를 가진 메서드 호출
=======================================================
//매개변수 개수가 다름
int AddNumbers(int a, int b)
{
return a + b;
}
int AddNumbers(int a, int b, int c)
{
return a + b + c;
}
// 메서드 호출
int sum1 = AddNumbers(10, 20); // 두 개의 정수 매개변수를 가진 메서드 호출
int sum2 = AddNumbers(10, 20, 30); // 세 개의 정수 매개변수를 가진 메서드 호출
✨ 재귀 호출 ✨
재귀 호출이라
말만 들어보면 자기 자신을 호출하는 거 같은데
맞다!!
자기 자신을 계속 호출하면서 끝나지 않는 것
마치 내가 거울을 보는 느낌..
대신 조건을 꼭 제대로 설정해주어야 한다.
좋은 예시를 가져와봤다.
static void CountDown(int n)
{
if (n <= 0)
{
Console.WriteLine("Done");
}
else
{
Console.WriteLine(n);
CountDown(n - 1); // 자기 자신을 호출
}
}
// 메서드 호출
// main 함수 안에 넣어주세요!
CountDown(5);
자,
5가 4를 호출
4가 3을 호출
3이 2를 호출
2가 1을 호출
1을 0이 호출
0이 되면서
Done 하면서 if문을 나온다.
0을 끝내면서 밖으로 나오니..
1이 있다. 1을 끝내니
2가 있다
2를 끝내니 3이 있고
3을 끝내니 4
4를 끝내니 5
이렇게 543212345가 된다 ㅎㅋㅋ
굉장히 어렵고 심오하다..
마지막으로
지금까지 공부한 메서드 정리 겸 예제를 보자.
// 원의 넓이를 계산하는 메서드
double CalculateCircleArea(double radius)
{
double area = Math.PI * radius * radius;
return area;
}
// 사각형의 넓이를 계산하는 메서드
double CalculateRectangleArea(double width, double height)
{
double area = width * height;
return area;
}
// 메서드 활용
double circleArea = CalculateCircleArea(5.0);
double rectangleArea = CalculateRectangleArea(3.0, 4.0);
Console.WriteLine("원의 넓이: " + circleArea);
Console.WriteLine("사각형의 넓이: " + rectangleArea);
이렇게 모듈화 하게 되면
언제든지 또 쓸 수 있다.
그래서 메서드는 참 좋다!
좋다!
메서드..
공부하는데 정말 시간을 많이 썼다.
특히 return..
당분간 보고 싶지 않다.. 너란 친구..
'C# 을 맛보았어요! > 문법정리를 해보았어요!' 카테고리의 다른 글
[ C# 기본 문법 14 ] 객체 지향 프로그래밍? 그게 뭘까? (1) | 2024.09.23 |
---|---|
[ C# 기본 문법 13 ] 구조체 (0) | 2024.09.22 |
[ C# 기본 문법 11 ] 컬렉션 (0) | 2024.09.22 |
[ C# 기본 문법 10 ] 배열 (1) | 2024.09.21 |
[ C# 기본 문법 9 ] 반복문 (0) | 2024.09.21 |