Static
메소드나 필드가 클래스의 인스턴스가 아닌 클래스 자체에 소속되도록 지정하는 한정자
- static 으로 한정하지 않은 필드는 자동으로 인스턴스에 소속
- static으로 한정한 필드는 클래스에 소속
인스턴스에 소속된 필드의 경우
class MyClass
{
public int a;
public int b;
public static void Main()
{
MyClass obj1 = new MyClass();
obj1.a = 1;
obj1.b = 2;
MyClass obj2 = new Myclass();
obj2.a = 3;
obj2.b = 4;
}
}
클래스에 소속된 필드의 경우 (static)
class MyClass
{
public static int a;
public static int b;
public static void Main()
{
MyClass.a = 1;
Myclass.b = 2;
}
}
📍 static으로 수식한 필드는 프로그램 전체에 걸쳐 하나만 존재, 프로그램 전체에 걸쳐 공유해야하는 변수가 있다면 정적 필드를 사용
using static Console;
internal static class Global
{
public static int Count = 0;
}
internal class ClassA
{
public ClassA()
{
Global.Count++;
}
}
internal class ClassB
{
public ClassB()
{
Global.Count++;
}
}
public static class StaticField
{
public static void App()
{
WriteLine($"Before Global Count : {Global.Count}");
new ClassA();
new ClassA();
new ClassB();
new ClassB();
WriteLine($"After Global Count : {Global.Count}");
}
}