함수 (Function)
- 미리 정해진 동작을 수행하는 코드 묶음
- 어떤 처리를 미리 함수로 만들어 두면 다시 반복적으로 사용 가능
static void PrintJoke()
{
Console.WriteLine("밤에 성시경이 두명 있으면?.");
Console.Write("야간");
Console.Write("투");
Console.WriteLine("시경");
}
static void GradeMyJoke(string input)
{
Console.WriteLine("당신의 농담은 " + input + " 입니다");
}
static void Main(string[] args)
{
printJoke();
string gread = "최악";
GradeMyJoke(gread);
GradeMyJoke("취향저격");
}
static void MoveLeft()
{
Console.WriteLine("좌측으로 이동");
}
static void MoveRight()
{
Console.WriteLine("우측으로 이동");
}
static void MoveForward()
{
Console.WriteLine("앞으로 이동");
}
static void MoveBackward()
{
Console.WriteLine("뒤로 이동");
}
static void Main(string[] args)
{
while (true)
{
switch (Console.ReadKey(true).Key)
{
case ConsoleKey.W:
case ConsoleKey.UpArrow:
MoveForward();
break;
case ConsoleKey.A:
case ConsoleKey.LeftArrow:
MoveLeft();
break;
case ConsoleKey.S:
case ConsoleKey.DownArrow:
MoveBackward();
break;
case ConsoleKey.D:
case ConsoleKey.RightArrow:
MoveRight();
break;
case ConsoleKey.D1:
Skill1();
break;
}
}
}
static void TripleShot(int first, int second, int third)
{
Console.WriteLine("때리기! 데미지 {0}", first);
Console.WriteLine("찌르기! 데미지 {0}", second);
Console.WriteLine("베기! 데미지 {0}", third);
}
static void Main(string[] args)
{
TripleShot(10, 20, 5);
TripleShot(100, 5, 0);
TripleShot(30, 30, 30);
}
static string MakeFishCake(string taste, float time)
{
if (taste=="")
{
Console.WriteLine("앙금없는 붕어빵은 만들수 없습니다.");
return "오류";
}
Console.WriteLine("반죽물을 붓습니다.");
Console.WriteLine($"{taste} 앙금을 넣습니다.");
if (time < 15)
{
Console.WriteLine($"익을때까지 {time} 초 기다립니다.");
Console.WriteLine("{0} 붕어빵 완성!!", taste);
return $"{taste} 붕어빵";
}
else
{
Console.WriteLine($"익을때까지 {time} 초 기다립니다.");
Console.WriteLine("탄 붕어빵 완성!!");
return "탄 붕어빵";
}
}
static void Main(string[] args)
{
MakeFishCake("팥", 10);
Console.WriteLine();
MakeFishCake("슈크림", 15);
}
static int TotalDamaage(int basicAttack, int equipAttack, int level)
{
return (level/2) * basicAttack * equipAttack;
}
static void Main(string[] args)
{
int totalDamage = TotalDamaage(10, 20, 3);
Console.WriteLine("총 대미지는 {0} 입니다.", totalDamage);
}
static float Area(float height, float width)
{
return height * width;
}
static void Main(string[] args)
{
Console.WriteLine("사각형의 넓이는 {0} 입니다.", Area(10.5f, 11f);
}
static int Function()
{
Console.WriteLine("리턴1");
Console.WriteLine("리턴2");
return 10;
Console.WriteLine("리턴3");
Console.WriteLine("리턴4");
}
static void Main(string[] args)
{
Function();
Function();
Function();
}
<반환형 (Return Type)>
- 함수의 결과(출력) 데이터의 자료형
- 함수가 끝나기 전까지 반드시 return을으로 반환형에 맞는 데이터를 출력해야함
- 함수진행 중 return을을 만나는 경우 그 즉시 결과 데이터를 반환하고 함수가 종료됨
- 함수의 결과(출력)이 없는 경우 반환형은 void이며 return을 생략가능
static int Function()
{
Console.WriteLine("1");
Console.WriteLine("2");
Console.WriteLine("3");
return 5;
}
static void Main(string[] args)
{
int result = Function();
Console.WriteLine("함수의 결과는 {0}", result);
}
static string GetPi()
{
return "안녕하세요";
}
static void Main(string[] args)
{
string result = GetPi();
Console.WriteLine(result);
}
static void PrintProfile(string name, string phone)
{
if (name == "")
{
Console.WriteLine("이름을 입력해주세요");
return;
}
Console.WriteLine($"이름: {name}, phone : {phone}");
}
<매개변수 (Parameter)> + out ~
- 함수에 추가(입력)할 테이터의 자룔형과 변수명
- 같은 함수에서도 매개변수 입력이 다름에 따라 다른 처리가 가능
static int Divide(int left, int right, out int remain)
{
remain = left % right;
return left / right;
}
static void Main(string[] args)
{
int result;
int remain;
result = Divide(11, 3, out remain);
Console.WriteLine("11/3은 몫{0} 나머지 {1}", result, remain);
}
static void Swap(ref int left, ref int right)
{
int temp = left;
left = right;
right = temp;
}
static void Main(string[] args)
{
int a = 10;
int b = 20;
Swap(ref a, ref b);
Console.WriteLine("a : {0}, b : {1}", a, b);
}
static void Main(string[] args)
{
Console.WriteLine("숫자를 입력해주세요.");
string input = Console.ReadLine();
int number;
int.TryParse(input, out number);
}