클래스의 멤버(변수, 메서드 등)를 개별 인스턴스에 종속되지 않고 클래스 자체에 속하도록 지정하는 키워드
static 메서드는 인스턴스 멤버에 직접 접근 불가클래스 자체에 속하는 메서드. 객체를 생성하지 않고 클래스 이름으로 직접 호출 가능
Main() 함수는 프로그램 시작점으로서, 클래스 인스턴스를 만들지 않고 실행됨Main() 내부에서 호출할 함수는 반드시 static이어야 함특정 클래스의 인스턴스를 통해 호출되는 메서드
static 키워드가 붙지 않음미리 정해진 동작을 수행하는 코드 묶음
어떤 처리를 미리 함수로 만들어 두면 반복적으로 재사용 가능
static void Function1()
{
Console.WriteLine("함수 1입니다.");
}
static void Main(string[] args)
{
Function1();
}
static void Function2(string input)
{
Console.WriteLine($"함수 2의 입력은 {input} 입니다");
}
static void Main(string[] args)
{
Function2("아무입력");
}
return을 통해 반환형에 맞는 값 반드시 반환해야 함 void 반환형은 return 생략 가능 static double Function3()
{
double pi = 3.141592;
Console.WriteLine("원주율 값을 반환했습니다.");
return pi;
}
static void Main(string[] args)
{
double returnPrintPie = Function3();
Console.WriteLine(returnPrintPie);
}
static string Function4(string taste, float time)
{
Console.WriteLine("피자를 만드는 중입니다");
Console.WriteLine($"{time}만큼 피자를 굽습니다.");
if (time < 10)
{
Console.WriteLine($"{taste}맛 피자 완성!");
return $"{taste}맛 피자 완성";
}
else
{
Console.WriteLine($"{taste}맛 피자 만들기 실패...");
return "피자가 탔습니다.";
}
}
static void Main(string[] args)
{
string pizza = "파인애플";
int pizzaTime = 10;
string output1 = Function4(pizza, pizzaTime);
Console.WriteLine(output1);
}
static float Area(float height, float width)
{
return height * width;
}
static void Main(string[] args)
{
float num1 = 5.5f;
float num2 = 10.5f;
Console.WriteLine($"높이가 {num1}, 너비가 {num2}인 사각형의 넓이는 {Area(num1, num2)}입니다.");
}
static int Function5(int input)
{
if (input <= 1)
{
return input;
}
else
{
return Function5(input - 1) + Function5(input - 2);
}
}
static void Main(string[] args)
{
int output = Function5(10);
Console.WriteLine(output);
}
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(10, 3, out remain);
Console.WriteLine($"몫은 {result}, 나머지는 {remain}");
}
함수 호출 시, 변수의 값만 복사해서 전달
원본 데이터는 변경되지 않음
static void Swap(int left, int right)
{
int temp = left;
left = right;
right = temp;
}
static void Main(string[] args)
{
int a = 10;
int b = 20;
Swap(a, b);
Console.WriteLine($"a: {a}, b: {b}"); // 값 변화 없음
}
함수 호출 시, 변수의 메모리 주소를 전달
원본 데이터가 변경됨
static void SwapReference(ref int left, ref int right)
{
int temp = left;
left = right;
right = temp;
}
static void Main(string[] args)
{
int a = 10;
int b = 20;
SwapReference(ref a, ref b);
Console.WriteLine($"a: {a}, b: {b}"); // 값 변경됨
}