C# 네임스페이스(네임스페이스)
Namespaces은 이름 그룹을 다른 이름과 별도로 유지하는 방법을 제공하도록 설계되었습니다. 한 네임스페이스에 선언된 클래스 이름은 다른 네임스페이스에 선언된 동일한 클래스 이름과 충돌하지 않습니다.
네임스페이스 정의
네임스페이스 정의는 아래와 같이 namespace 키워드로 시작하고 그 뒤에 네임스페이스 이름이 옵니다.
namespace namespace_name { // 代码声明 }
네임스페이스 버전을 지원하는 함수나 변수를 호출하려면, 네임스페이스는 아래와 같이 이름이 앞에 배치됩니다.
namespace_name.item_name;
다음 프로그램은 네임스페이스의 사용법을 보여줍니다.
using System; namespace first_space { class namespace_cl { public void func() { Console.WriteLine("Inside first_space"); } } } namespace second_space { class namespace_cl { public void func() { Console.WriteLine("Inside second_space"); } } } class TestClass { static void Main(string[] args) { first_space.namespace_cl fc = new first_space.namespace_cl(); second_space.namespace_cl sc = new second_space.namespace_cl(); fc.func(); sc.func(); Console.ReadKey(); } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Inside first_space Inside second_space
using 키워드
using 키워드는 프로그램이 지정된 네임스페이스의 이름을 사용하고 있음을 나타냅니다. 예를 들어, 프로그램에서 Console 클래스가 정의된 System 네임스페이스를 사용합니다.
Console.WriteLine ("Hello there");
정규화된 이름을 다음과 같이 작성할 수 있습니다.
System.Console.WriteLine("Hello there");
또한 using 네임스페이스 지시어를 사용할 수도 있으므로 사용할 때 네임스페이스 이름을 앞에 추가할 필요가 없습니다. . 이 지시문은 후속 코드가 지정된 네임스페이스의 이름을 사용함을 컴파일러에 알려줍니다. 다음 코드는 네임스페이스 적용을 지연합니다.
using 사양을 사용하여 위 예제를 다시 작성해 보겠습니다.
using System; using first_space; using second_space; namespace first_space { class abc { public void func() { Console.WriteLine("Inside first_space"); } } } namespace second_space { class efg { public void func() { Console.WriteLine("Inside second_space"); } } } class TestClass { static void Main(string[] args) { abc fc = new abc(); efg sc = new efg(); fc.func(); sc.func(); Console.ReadKey(); } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Inside first_space Inside second_space
중첩된 네임스페이스
네임스페이스는 중첩될 수 있습니다. 즉, 네임스페이스를 정의할 수 있습니다.
namespace namespace_name1 { // 代码声明 namespace namespace_name2 { // 代码声明 } }
다음과 같이 점(.) 연산자를 사용하여 중첩된 네임스페이스의 멤버에 액세스할 수 있습니다.
using System; using first_space; using first_space.second_space; namespace first_space { class abc { public void func() { Console.WriteLine("Inside first_space"); } } namespace second_space { class efg { public void func() { Console.WriteLine("Inside second_space"); } } } } class TestClass { static void Main(string[] args) { abc fc = new abc(); efg sc = new efg(); fc.func(); sc.func(); Console.ReadKey(); } }
위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Inside first_space Inside second_space