- funtion = Method이다.
- static = 정적 한정자
using System;
class Function_Method
{
static void Main()
{
for (int i = 0; i < 3; i++)
{
Hello();
}
static void Hello()
{
Console.WriteLine("쫗은 아침입니다.");
}
static void Main() //static 정적 한정자
{
for (int i = 0; i < 3; i++)
{
Hi();
}
}
static void Hi()
{
Console.WriteLine("안녕하세요");
}
}
return 값(반환 값)을 가지지 않는 것은 void 유일하다.
static void Hi(매개변수){}
메소드 안에는 매개변수가 들어간다.
using System;
class Parameters
{
// string name은 매개변수
// static 한정자가 있는 Greeting은 매개변수가 있는 메소드이다.
static void Greeting(string name)
{
Console.WriteLine($"{name}님 안녕");
}
static void Main()
{
Greeting("홍길동");
Greeting("임꺽정");
Greeting("김구");
}
함수 >= 메소드 (파라미터)
메소드는 함수에 속한다.
using System;
class Parameters
{
static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
{
GetString(i);
}
}
// 메모리에서 copy하기 때문에 타입만 같으면 된다.
// Main의 i의 값이 int 타입
static void GetString(int x)
{
// argument : 파라미터에 들어갈 값
Console.WriteLine($"{x}번째 호출입니다");
}
}
void 외의 것들은 모두 반환값을 가지기 때문에 return을 사용한다.
using System;
using System.Xml.Linq;
class ReturnValue
{
//void 외 다 return 값이 있다.
static string GetString(string name)
{
//Console.WriteLine($"{name}님 안녕하세요");
// return을 꼭 해줘야 한다.
return $"{name}님 안녕하세요";
}
static void Main()
{
string name = GetString("홍길동");
Console.WriteLine(name); // 호출
}
}
class ReturnInt
{
static int Square(int i)
{
int square = i * i;
//Console.WriteLine($"{i}^2 = {square}");
return square;
}
static void Main()
{
//int x = 10;
//int result = x * x;
//Console.WriteLine($"{x}^2 = {result}");
int e = Square(10);
Console.WriteLine($"i^2 = {e}");
}
}
class Program
{
static string GetString(int x)
{
return $"{x}번째 반환값입니다";
}
static void Main()
{
for (int i = 0; i < 3; i++)
{
string str_return = GetString(i);
Console.WriteLine($"{str_return}");
}
}
}
static string GetString(int x){}
- int x는 Main의 i가 숫자이기 때문에 같은 타입의 int를 사용
- string은 return 값이 문자열이라서이다.
class Program
{
static double Sum_double(double x, double y)
{
//double number = x + y;
//return number;
return x + y;
}
static void Main()
{
double Return_sum = Sum_double(3.0, 2.7);
Console.WriteLine("입력값은 3.0, 2.7입니다");
Console.WriteLine($"두 수의 합은 {Return_sum}");
}
}
메소드를 구분하여 Min과 Max를 제작하여 따로 호출하였다.
한번에 두 개의 매개변수가 들어갈 경우 호출 메소드에서도 같은 형태로 제작해준다.
using System;
class MinMAx
{
static int Max (int a, int b)
{
int max = (a >= b) ? a : b;
return max;
}
static int Min(int a, int b)
{
int min = (a >= b) ? b : a;
return min;
}
static void Main()
{
Console.WriteLine("첫 번재 정수값을 입력하세요");
int input_1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("두 번재 정수값을 입력하세요");
int input_2 = Convert.ToInt32(Console.ReadLine());
int max = Max(input_1, input_2);
int min = Min(input_1, input_2);
Console.WriteLine($"입력하신 값은 {input_1} {input_2}");
Console.WriteLine($"Max = {max}, Min = {min}");
}
}
// DefaultParameter
static void Show(string x, int level = 1)
{
Console.WriteLine($"{x}, {level}");
}
static void Main()
{
{
Show("원주율");
Show("원주율", 10);
}
}

만약, static void Show(string x, int level = 1)에서 level = 1의 값이 없었다면, 컴파일 오류가 뜬다.

이름을 사용하지 않으면 코드의 순서대로 값이 대입된다.
이름을 정해주면 이름 설정한 순서대로 값을 대입된다.
using System;
class NamedParameter
{
static void Divide(double first, double second)
{
double result = first / second;
Console.WriteLine(result);
}
static void Main()
{
Divide(1.0, 2.0); //출력값 : 0.5
Divide(2.0, 1.0); //출력값 : 2
Divide(second: 2.0, first: 1.0); //출력값 : 0.5
}
}
메소드의 이름이 같아도 자기에게 맞는 타입을 따라 들어가 반환된다.
using System;
class MethodOverload
{
static void GetNumber(int x)
{
Console.WriteLine($"Int32 = {x}");
}
static void GetNumber(long x)
{
Console.WriteLine($"Int64 = {x}");
}
static void Main()
{
GetNumber(1234);
GetNumber(1234L); // long Type
//메소드의 이름은 같지만, 둘은 타입이 다르다.
}
}