메서드와 속성
public static class ClassA
{
public static void MethodA() { }
public static void MethodB() { }
}
ClassA.MethodA();
ClassA.MethodB();
// 에서 아래와 같이 가능
using static ClassA;
MethodA();
MethodB();
enum 열거형
public enum EState
{
IDLE,
MOVE
}
// 아래와 같이 사용시 EState. 생략 가능
using static EState;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(MOVE);
Console.WriteLine(IDLE);
}
}
상수
public class Status
{
public const string Pending = "Pending";
public const string InProgress = "InProgress";
public const string Completed = "Completed";
}
var pending = Pending;
var completed = Completed;
다중 클래스
public class ClassA
{
public class ClassB
{
public static void MethodA() { }
public static void MethodB() { }
}
}
ClassA.ClassB.MethodA();
ClassA.ClassB.MethodB();
// 에서 아래와 같이 변경 가능
using static ClassA;
ClassB.MethodA();
ClassB.MethodB();
확장 메서드
namespace NamespaceA;
public static class NumberExtensions
{
public static int Add(this int number1, int number2)
{
return number1 + number2;
}
}
// 아래와 같이 가능
using static NamespaceA.NumberExtensions;
namespace NamespaceB;
var sum = 1.Add(2);
// 단 일반 메서드 불가능
NumberExtensions.Add(1, 1); // Valid
// Error CS0103
// The name 'Add' does not exist in the current context
Add(1, 1);
부모 클래스
public class ClassA
{
public static void MethodA() { }
}
public class ClassB : ClassA
{
public static void MethodB() { }
}
using static ClassB;
MethodB(); // 가능
MethodA(); // 존재하지 않는 함수라 불가
두 클래스 같은 메서드명 모호함
public class ClassA
{
public static void Method() { }
}
public class ClassB
{
public static void Method() { }
}
using static ClassA;
using static ClassB;
// 에러 CS0121
Method();
출처) https://code-maze.com/using-static-feature-csharp/