C# 6.0에서는 정적 멤버를 클래스명 없이 직접 사용할 수 있는 기능이 추가되었습니다. 이 기능은 using static 키워드를 사용하여 구현됩니다.
예제1
using static 키워드를 사용하면, 해당 파일 내에서는 지정된 클래스의 모든 정적 멤버를 클래스명 없이 사용할 수 있습니다. 예를 들어, 다음과 같이 코드를 작성하면 됩니다.
using static System.Console;
namespace CS6
{
class Program
{
static void Main(string[] args)
{
// Console. 생략 가능
WriteLine("csharpstudy.com");
// Math. 생략 가능
int x = Random();
float y = Sqrt(100);
// DateTime. 생략 가능
DateTime now = Now();
}
}
}
이 코드에서는 using static 키워드를 사용하여 System.Console, System.Math, System.DateTime 클래스의 모든 정적 멤버를 클래
스명 없이 사용할 수 있습니다. 따라서 WriteLine(), Random(), Sqrt(), Now() 메서드를 호출할 때 클래스명을 생략할 수 있습니다.
using static 키워드를 사용하면 코드를 보다 간결하고 직관적으로 만들 수 있습니다. 특히, 같은 클래스의 여러 정적 멤버를 사용하는 경우에는 using static 키워드를 사용하면 코드가 훨씬 더 깔끔해집니다.
예제2
다음은 using static 키워드를 사용하여 게임에서 사용할 수 있는 기능을 구현한 예제입니다.
using static System.Random;
using static System.Console;
namespace Game
{
class Program
{
static void Main(string[] args)
{
// 플레이어의 이름을 입력받습니다.
string name = Console.ReadLine();
// 플레이어의 HP를 100으로 설정합니다.
int hp = 100;
// 게임을 시작합니다.
while (true) {
// 몬스터를 생성합니다.
int monsterHp = Random(100, 200);
// 몬스터와 플레이어가 공격을 주고받습니다.
while (true) {
// 플레이어가 공격합니다.
int damage = Random(10, 20);
monsterHp -= damage;
// 몬스터가 죽었다면 게임을 종료합니다.
if (monsterHp <= 0) {
break;
}
// 몬스터가 공격합니다.
damage = Random(10, 20);
hp -= damage;
// 플레이어가 죽었다면 게임을 종료합니다.
if (hp <= 0) {
break;
}
}
// 게임의 상태를 출력합니다.
WriteLine($"{name}의 HP: {hp}");
WriteLine($"몬스터의 HP: {monsterHp}");
}
}
}
}
이 코드에서는 using static 키워드를 사용하여 Random 클래스의 Random() 메서드와 Console 클래스의 WriteLine() 메서드를 클래스명 없이 사용할 수 있습니다. 따라서 Random() 메서드를 호출할 때 Random.Random() 대신 Random()을 사용할 수 있고, WriteLine() 메서드를 호출할 때 Console.WriteLine() 대신 WriteLine()을 사용할 수 있습니다.
이 예제는 단순한 예제이지만, using static 키워드를 사용하여 코드를 보다 간결하고 직관적으로 만들 수 있는 방법을 보여줍니다.
마무리
C# 6.0의 using static 키워드는 정적 멤버를 보다 간결하고 직관적으로 사용할 수 있는 유용한 기능입니다. 개발자는 이 기능을 사용하여 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.
'C#' 카테고리의 다른 글
C# Linked List (0) | 2023.12.02 |
---|---|
C# 11.0의 required modifier (0) | 2023.11.10 |
C# 6.0의 catch/finally 블럭에서 await 사용 (0) | 2023.11.08 |
Microsoft.CodeAnalysis.LanguageServer client: couldn't create connection to server. (0) | 2023.10.27 |
C#의 정적 타입 정보 연산자 (0) | 2023.10.26 |