정적 메서드와 필드
형식 자체에 속하는 멤버를 정의합니다.
정적 메서드와 필드은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
정적 멤버와 인스턴스 멤버
인스턴스 멤버는 각 객체에 속하고, 정적 멤버는 클래스 자체에 속합니다. 정적 멤버는 정확히 하나만 존재하며 모든 객체가 공유합니다.
using System;
class Counter
{
public static int Total; // shared
public int Id; // per instance
}
class Program
{
static void Main()
{
Counter.Total = 5;
Console.WriteLine("Shared Total: " + Counter.Total);
}
}정적 필드 선언하기
static 필드는 인스턴스가 아니라 클래스 이름을 통해 접근합니다: ClassName.Field.
using System;
class Bank
{
public static decimal InterestRate = 0.05m;
}
class Program
{
static void Main()
{
Console.WriteLine("Rate: " + Bank.InterestRate);
}
}정적 메서드
static 메서드는 인스턴스 없이 실행됩니다. 클래스에서 호출하며, this가 없으므로 인스턴스 필드를 사용할 수 없습니다.
using System;
class MathUtil
{
public static int Square(int x)
{
return x * x;
}
}
class Program
{
static void Main()
{
Console.WriteLine(MathUtil.Square(7));
}
}인스턴스 간 공유 상태
정적 필드는 하나만 존재하므로 모든 인스턴스가 같은 값을 확인합니다. 이는 카운터와 공유 구성에 유용합니다.
using System;
class Robot
{
public static int Count;
public Robot()
{
Count++;
}
}
class Program
{
static void Main()
{
new Robot();
new Robot();
new Robot();
Console.WriteLine("Robots created: " + Robot.Count);
}
}정적 메서드는 인스턴스 데이터를 사용할 수 없습니다
정적 메서드에는 this가 없으므로 매개변수, 지역 변수 및 다른 정적 멤버만 사용할 수 있습니다.
using System;
class Calculator
{
public static int Add(int a, int b) => a + b;
public static int Multiply(int a, int b) => a * b;
}
class Program
{
static void Main()
{
Console.WriteLine(Calculator.Add(2, 3));
Console.WriteLine(Calculator.Multiply(4, 5));
}
}정적 멤버와 인스턴스 멤버 함께 사용하기
한 클래스에 두 종류의 멤버를 모두 포함할 수 있습니다. 인스턴스 메서드는 정적 멤버를 읽을 수 있지만, 정적 메서드는 인스턴스 멤버를 읽을 수 없습니다.
using System;
class Account
{
public static decimal Fee = 2m;
public decimal Balance;
public decimal NetBalance()
{
return Balance - Fee; // instance method can read static
}
}
class Program
{
static void Main()
{
var a = new Account { Balance = 100m };
Console.WriteLine("Net: " + a.NetBalance());
}
}정적 카운터 패턴
정적 카운터에서 새 객체마다 식별자를 할당하는 것은 정적 필드의 대표적인 사용 사례입니다.
using System;
class Ticket
{
private static int _next = 1;
public int Number;
public Ticket()
{
Number = _next++;
}
}
class Program
{
static void Main()
{
Console.WriteLine(new Ticket().Number);
Console.WriteLine(new Ticket().Number);
Console.WriteLine(new Ticket().Number);
}
}정적 도우미 메서드
정적 메서드는 형식 지정기나 변환기처럼 입력에만 의존하는 상태 없는 작업에 적합합니다.
using System;
class Format
{
public static string Money(decimal amount)
{
return "$" + amount.ToString("0.00");
}
}
class Program
{
static void Main()
{
Console.WriteLine(Format.Money(12.5m));
}
}정적 메서드에서 정적 메서드 호출하기
정적 메서드는 인스턴스 없이 같은 클래스의 다른 정적 메서드를 자유롭게 호출할 수 있습니다.
using System;
class Geometry
{
public static double CircleArea(double r) => Math.PI * Square(r);
private static double Square(double x) => x * x;
}
class Program
{
static void Main()
{
Console.WriteLine(Geometry.CircleArea(2).ToString("0.00"));
}
}정적 필드는 유지됩니다
정적 필드는 객체 하나에만 해당하는 것이 아니라 프로그램의 수명 동안 값을 유지합니다. 캐시나 누적 합계에 사용하세요.
using System;
class Logger
{
public static int MessageCount;
public static void Log(string msg)
{
MessageCount++;
Console.WriteLine("[" + MessageCount + "] " + msg);
}
}
class Program
{
static void Main()
{
Logger.Log("start");
Logger.Log("working");
Logger.Log("done");
}
}한데 모아 보기
정적 멤버는 공유 요율, 카운터, 상태 없는 도우미처럼 클래스 전체에 적용되는 개념을 표현하고, 인스턴스 멤버는 객체별 데이터를 저장합니다.
using System;
class Order
{
public static decimal TaxRate = 0.10m;
public decimal Subtotal;
public decimal Total() => Subtotal + Subtotal * TaxRate;
}
class Program
{
static void Main()
{
var o = new Order { Subtotal = 200m };
Console.WriteLine("Total: " + o.Total());
}
}빠른 확인
정적 멤버에 대한 이해도를 확인해 보세요.
복습
정적 멤버는 클래스에 속하며 하나의 공유 복사본만 가지고, 인스턴스 멤버는 각 객체에 속합니다. 정적 메서드에는 this가 없으므로 인스턴스 데이터에 접근할 수 없지만, 인스턴스 코드는 정적 멤버를 읽을 수 있습니다. 카운터, 공유 구성 및 상태 없는 도우미에는 정적 멤버를 사용하세요.
using System;
class Demo
{
public static int Shared;
public int Own;
public static void Bump() => Shared++;
}
class Program
{
static void Main()
{
Demo.Bump();
Demo.Bump();
Console.WriteLine(Demo.Shared);
}
}자주 묻는 질문
“정적 메서드와 필드” 강의는 무료인가요?
네 — “정적 메서드와 필드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“정적 메서드와 필드”에서 뭘 배우나요?
형식 자체에 속하는 멤버를 정의합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C# Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“정적 메서드와 필드” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.