네임스페이스
namespace
키워드는 관련 개체 집합을 포함하는 범위를 선언하는 데 사용됩니다. 네임스페이스를 사용하여 코드 요소를 구성하고 전역적으로 고유한 형식을 만들 수 있습니다.
namespace SampleNamespace
{
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
namespace Nested
{
class SampleClass2 { }
}
}
‘파일 범위 네임스페이스 선언’을 사용하면 파일의 모든 형식이 단일 네임스페이스에 있음을 선언할 수 있습니다. C# 10에서는 파일 범위 네임스페이스 선언을 사용할 수 있습니다. 다음 예제는 위의 예제와 비슷하지만 파일 범위 네임스페이스 선언을 사용합니다.
using System;
namespace SampleFileScopedNamespace;
class SampleClass { }
interface ISampleInterface { }
struct SampleStruct { }
enum SampleEnum { a, b }
delegate void SampleDelegate(int i);
앞의 예제에는 중첩된 네임스페이스가 포함되지 않았습니다. 파일 범위 네임스페이스는 추가 네임스페이스 선언을 포함할 수 없습니다. 중첩된 네임스페이스 또는 두 번째 파일 범위 네임스페이스를 선언할 수 없습니다.
namespace SampleNamespace;
class AnotherSampleClass
{
public void AnotherSampleMethod()
{
System.Console.WriteLine(
"SampleMethod inside SampleNamespace");
}
}
namespace AnotherNamespace; // Not allowed!
namespace ANestedNamespace // Not allowed!
{
// declarations...
}
네임스페이스 내에서 다음 형식 중 0개 이상을 선언할 수 있습니다.
컴파일러는 기본 네임스페이스를 추가합니다. 전역 네임스페이스라고도 하는 이 명명되지 않은 네임스페이스는 모든 파일에 있습니다. 선언된 네임스페이스에 포함되지 않은 선언을 포함합니다. 전역 네임스페이스의 모든 식별자는 명명된 네임스페이스에서 사용할 수 있습니다.
네임스페이스에는 암시적으로 퍼블릭 액세스 권한이 있습니다. 네임스페이스의 요소에 할당할 수 있는 액세스 한정자에 대한 설명은 액세스 한정자를 참조하세요.
둘 이상의 선언에서 네임스페이스를 정의할 수 있습니다. 예를 들어 다음 예제에서는 MyCompany
네임스페이스의 일부로 두 클래스를 정의합니다.
namespace MyCompany.Proj1
{
class MyClass
{
}
}
namespace MyCompany.Proj1
{
class MyClass1
{
}
}
다음 예제에서는 중첩된 네임스페이스에서 정적 메서드를 호출하는 방법을 보여 줍니다.
namespace SomeNameSpace
{
public class MyClass
{
static void Main()
{
Nested.NestedNameSpaceClass.SayHello();
}
}
// a nested namespace
namespace Nested
{
public class NestedNameSpaceClass
{
public static void SayHello()
{
Console.WriteLine("Hello");
}
}
}
}
// Output: Hello
C# 언어 사양
자세한 내용은 C# 언어 사양의 네임스페이스 섹션을 참조하세요. 파일 범위 네임스페이스 선언에 대한 자세한 내용은 기능 사양을 참조하세요.
참고 항목
.NET