C#의 네임스페이스 별칭
이 자습서는 C#의 네임스페이스 별칭 개념을 이해하는 데 도움이 됩니다. 이 개념을 완전히 이해하는 데 도움이 되는 데모 코드를 구현할 것입니다.
C#
의 네임스페이스
C#에서 네임스페이스는 메서드, 클래스, 구조체 및 열거형을 논리적으로 구성하여 효율적으로 만들고 함수 및 클래스의 범위를 제어하는 데 사용됩니다.
유형 또는 네임스페이스 별칭은 코드를 이해하기 쉽게 만들고 개발자의 시간을 절약하는 데 도움이 됩니다. 유형 앨리어싱은 단일 네임스페이스에서 특정 클래스 또는 함수의 앨리어스를 지정하려는 경우에 유용합니다.
using
키워드를 사용하면 C#에서 이러한 기능에 액세스할 수 있습니다.
C#
의 using
지시문
C#의 using
컴파일러 지시문을 사용하여 범위를 정의할 수 있습니다. 네임스페이스의 별칭을 만들거나 클래스의 정적 멤버를 가져오거나 다른 네임스페이스에서 특정 유형을 가져오는 데 사용할 수도 있습니다.
콘솔 입력 및 출력은 프로그래밍의 기본입니다. C#에서 System
네임스페이스의 Console
클래스는 콘솔 작업(예: 입력 또는 출력)을 수행하는 데 사용됩니다.
WriteLine()
, ReadLine()
등에 액세스하기 위해 C# 프로젝트에서 using System
으로 사용한 적이 있어야 합니다.
C#
의 별칭
별칭은 네임스페이스/클래스의 긴 이름을 짧은 이름으로 대체하여 모호한 문이나 클래스를 피하는 데 도움이 됩니다. 원래의 논리적 기능을 재교육합니다.
개발자는 별칭을 사용하여 네임스페이스 기능을 보다 빠르고 효과적으로 활용할 수 있습니다. 프로그램 실행 시간에 악영향을 미치지 않습니다. 오히려 개발 시간을 가속화합니다.
먼저 개념을 이해하기 위해 간단한 C# 콘솔 프로젝트를 만들고 별칭을 사용하지 않는 다음 코드를 작성해 보겠습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NamespaceAliasing {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hi! I am a Console.WriteLine");
Console.Write("Let me know your good name: ");
var name = Console.ReadLine();
Console.WriteLine("Welcome: " + name);
Console.ReadKey();
}
}
}
user
를 입력으로 입력하면 출력은 다음과 같습니다.
Hi! I am a Console.WriteLine
Let me know your good name: user
Welcome: user
Visual Studio에서 콘솔 C# 프로젝트를 만들 때 일부 기본 네임스페이스를 자체적으로 가져옵니다. 보시다시피 using System
및 기타 네임스페이스는 소스 파일 위에 가져옵니다.
네임스페이스를 가져올 때 컴파일러는 해당 네임스페이스의 모든 멤버 클래스, 메서드 및 변수에 액세스해야 한다는 것을 알고 있습니다. 따라서 System
네임스페이스를 가져오면 ReadLine()
, WriteLine()
, Write()
메서드에 액세스할 수 있습니다.
이제 Console
클래스에 대한 별칭을 만들어 관련 메서드를 호출하는 동안 항상 입력할 필요가 없도록 합시다. 다음 코드에서 System.Console
에 대한 별칭 S
를 만들었습니다.
이제 Console
을 입력하는 대신 별칭 S
를 사용하여 콘솔 메서드에 액세스할 수 있습니다.
별칭은 식별자의 다른 이름일 뿐이므로 이전 식별자는 이전에 사용할 수 있었던 것처럼 작동합니다.
예를 들어, 다음 코드에서 System.Console
은 별칭을 선언하기 전과 마찬가지로 여전히 액세스 가능하고 작동합니다.
using S = System.Console;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NamespaceAliasing {
class Program {
static void Main(string[] args) {
S.WriteLine("Hi! I am a S.WriteLine");
S.Write("Let me know your good name: ");
var name = S.ReadLine();
S.WriteLine("Welcome: " + name);
System.Console.WriteLine("I am Console.WriteLine");
S.ReadKey();
}
}
}
출력:
Hi! I am a S.WriteLine
Let me know your good name: user
Welcome: user
I am Console.WriteLine
별칭의 또 다른 용도는 다른 네임스페이스의 여러 클래스를 사용해야 하지만 이름이 같은 유형이 있는 경우입니다.
특정 클래스를 참조하는 전체 이름을 사용하여 이를 구현하거나 별칭을 사용하여 네임스페이스 및 액세스 유형에 대한 별칭을 만들 수 있습니다.
다음 예제에서는 두 네임스페이스에 이름이 같은 메서드가 있는 시나리오를 보여줍니다.
using S = System.Console;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NamespaceAliasing {
using Alias1 = NameSpace1.ClassOne;
using Alias2 = NameSpace2.ClassTwo;
class Program {
static void Main(string[] args) {
var object1 = new Alias1();
object1.Sample();
var object2 = new Alias2();
object2.Sample();
S.ReadKey();
}
}
}
namespace NameSpace1 {
public class ClassOne {
public void Sample() {
S.WriteLine("I am a Sample from Namespace1");
}
}
}
namespace NameSpace2 {
class ClassTwo {
public void Sample() {
S.WriteLine("I am a Sample from Namespace2");
}
}
}
출력:
I am a Sample from Namespace1
I am a Sample from Namespace2
위의 코드 스니펫에는 NameSpace1
및 NameSpace2
라는 두 개의 네임스페이스가 있습니다. 둘 다 각각 ClassOne
및 ClassTwo,
라는 클래스가 있습니다.
두 네임스페이스의 메서드는 이름이 같으므로 이름만 사용하여 호출하면(예: Sample()
) 컴파일러는 호출되는 네임스페이스를 지정할 수 없습니다.
올바른 실행을 위해 Namespace1.ClassOne.Sample()
을 입력하여 완전한 참조를 지정해야 합니다.
코드에서 여러 번 사용하면 어렵고 모호합니다. 이 문제는 위의 예제 코드에서 생성한 대로 네임스페이스의 별칭을 생성하여 해결할 수 있습니다.
매번 Namespace1.ClassOne.Sample
을 입력할 필요가 없습니다. 대신 Alias1
및 Alias2
라는 별칭을 사용할 수 있습니다.
별칭은 클래스의 정적 멤버를 참조하고 전체 참조를 입력하는 대신 이름으로 사용할 수 있습니다. 예를 들어 System
네임스페이스의 Math
클래스에는 Sqrt()
와 같은 정적 함수와 PI
및 E
와 같은 정적 멤버가 포함됩니다.
다음은 별칭을 만들어 다른 네임스페이스에서 정적 함수를 호출하는 예입니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static NameSpace1.SampleClass;
namespace StaticAliasing {
class Program {
static void Main(string[] args) {
function1();
Console.ReadKey();
}
}
}
namespace NameSpace1 {
public class SampleClass {
public static void function1() {
System.Console.WriteLine("I am a static function.");
}
}
}
출력:
I am a static function.
프로그램 전체에서 function1()
을 여러 번 사용해야 한다고 상상해 보십시오. 매번 NameSpace1.SampleClass.function1
을 입력해야 합니다.
그러나 이제 우리는 그것을 그 이름으로 부를 수 있습니다. 자세한 내용은 using directive in C#을 참조하세요.