유틸리티용 정적 클래스
정적 클래스에 도우미 함수를 모읍니다.
유틸리티용 정적 클래스은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
정적 클래스란
정적 클래스는 static class로 선언합니다. 정적 멤버만 포함할 수 있으며 인스턴스화할 수 없습니다. 유틸리티 함수의 자연스러운 보금자리입니다.
using System;
static class StringUtils
{
public static string Shout(string s) => s.ToUpper() + "!";
}
class Program
{
static void Main()
{
Console.WriteLine(StringUtils.Shout("hello"));
}
}인스턴스를 만들 수 없습니다
정적 클래스에는 new를 작성하지 않습니다. 모든 접근은 클래스 이름을 직접 통해 이루어집니다.
using System;
static class MathUtils
{
public static int Cube(int x) => x * x * x;
}
class Program
{
static void Main()
{
// No instance needed
Console.WriteLine(MathUtils.Cube(3));
}
}정적 멤버만 허용됩니다
컴파일러는 정적 클래스의 모든 멤버가 정적인지 확인합니다. 인스턴스 필드나 생성자는 허용되지 않습니다.
using System;
static class Temperature
{
public static double ToFahrenheit(double c) => c * 9 / 5 + 32;
public static double ToCelsius(double f) => (f - 32) * 5 / 9;
}
class Program
{
static void Main()
{
Console.WriteLine(Temperature.ToFahrenheit(100));
Console.WriteLine(Temperature.ToCelsius(32));
}
}관련 도우미 묶기
같은 주제를 공유하는 함수를 정적 클래스에 묶으면 Validation.IsEmail(...)처럼 명확한 이름 공간을 제공할 수 있습니다.
using System;
static class Validation
{
public static bool IsPositive(int n) => n > 0;
public static bool IsEmail(string s) => s.Contains("@") && s.Contains(".");
}
class Program
{
static void Main()
{
Console.WriteLine(Validation.IsPositive(5));
Console.WriteLine(Validation.IsEmail("a@b.com"));
}
}내장 Math 클래스
.NET의 Math 클래스는 정적 클래스입니다. 이를 인스턴스화하지 않고 Math.Sqrt, Math.Max 등을 호출하기만 하면 됩니다.
using System;
class Program
{
static void Main()
{
Console.WriteLine(Math.Max(3, 9));
Console.WriteLine(Math.Sqrt(144));
Console.WriteLine(Math.Round(3.14159, 2));
}
}정적 필드를 포함한 정적 클래스
정적 클래스는 메서드에서 사용하는 공유 상수나 구성을 위해 정적 필드를 포함할 수 있습니다.
using System;
static class Pricing
{
public static decimal Tax = 0.08m;
public static decimal WithTax(decimal price) => price + price * Tax;
}
class Program
{
static void Main()
{
Console.WriteLine(Pricing.WithTax(100m));
}
}순수 함수
유틸리티 메서드는 숨겨진 상태 없이 출력이 입력에만 의존하는 순수 함수로 만드는 것이 가장 좋습니다. 이렇게 하면 동작을 예측하고 테스트하기 쉽습니다.
using System;
static class Geometry
{
public static double RectArea(double w, double h) => w * h;
public static double TriArea(double b, double h) => 0.5 * b * h;
}
class Program
{
static void Main()
{
Console.WriteLine(Geometry.RectArea(4, 5));
Console.WriteLine(Geometry.TriArea(6, 3));
}
}유틸리티 메서드 조합하기
정적 도우미는 서로를 호출하여 더 작은 작업으로 더 큰 작업을 구성할 수 있습니다.
using System;
static class TextUtils
{
public static string Clean(string s) => s.Trim().ToLower();
public static string Slug(string s) => Clean(s).Replace(" ", "-");
}
class Program
{
static void Main()
{
Console.WriteLine(TextUtils.Slug(" Hello World "));
}
}정적 클래스와 일반 클래스의 정적 멤버 비교
형식이 도우미만 포함한다면 클래스 전체를 정적으로 만드세요. 도우미와 인스턴스를 함께 포함한다면 일부 정적 멤버를 가진 일반 클래스로 유지하세요.
using System;
static class Convert2
{
public static int FeetToInches(int feet) => feet * 12;
}
class Program
{
static void Main()
{
Console.WriteLine(Convert2.FeetToInches(3) + " inches");
}
}유틸리티를 쉽게 찾을 수 있도록 유지하기
도우미를 이름이 명확한 정적 클래스(DateUtils, StringUtils)에 묶으면 다른 개발자가 쉽게 찾을 수 있습니다.
using System;
static class DateUtils
{
public static bool IsWeekend(DayOfWeek d) =>
d == DayOfWeek.Saturday || d == DayOfWeek.Sunday;
}
class Program
{
static void Main()
{
Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Sunday));
Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Monday));
}
}한데 모아 보기
정적 유틸리티 클래스는 상태 없는 로직을 명확한 이름 아래에 모아 코드베이스 전체의 중복을 줄여 줍니다.
using System;
static class MoneyUtils
{
public static string Format(decimal amount) => "$" + amount.ToString("0.00");
public static decimal ApplyDiscount(decimal price, double pct) =>
price * (decimal)(1 - pct / 100);
}
class Program
{
static void Main()
{
decimal discounted = MoneyUtils.ApplyDiscount(80m, 25);
Console.WriteLine(MoneyUtils.Format(discounted));
}
}빠른 확인
정적 클래스에 대한 이해도를 확인해 보세요.
복습
정적 클래스(static class X)는 인스턴스화할 수 없으며 정적 멤버만 포함할 수 있습니다. 정적 클래스는 상태 없는 유틸리티 함수와 상수를 설명적인 이름 아래에 모아 두는 표준적인 공간입니다. 내장 Math 클래스가 익숙한 예입니다.
using System;
static class Util
{
public static int Double(int n) => n * 2;
}
class Program
{
static void Main()
{
Console.WriteLine(Util.Double(21));
}
}자주 묻는 질문
“유틸리티용 정적 클래스” 강의는 무료인가요?
네 — “유틸리티용 정적 클래스” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“유틸리티용 정적 클래스”에서 뭘 배우나요?
정적 클래스에 도우미 함수를 모읍니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C# Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“유틸리티용 정적 클래스” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 정적 메서드와 필드
- 유틸리티용 정적 클래스
- 상수 및 readonly 필드
- 정적 설계와 인스턴스 설계