코젤브

namespace 란? 본문

컴공의 일상/C#

namespace 란?

코딩하는 젤리 2024. 4. 17. 01:10

c++을 배울 때 분명히 다루긴 했지만, 이번에 ASP.NET을 진행하다보니 namespace의 중요성에 대해 느껴서 헷갈리는 부분을 정리하기로 했다!

네임스페이스는 C# 및 ASP.NET Core 개발에서 코드의 구조를 정의하고 조직화하는 데 매우 중요한 역할!

 

namespace란?

코드를 구성하는 타입들을 하나의 묶음으로 취급하여 관리할 수 있도록 해주는 논리적인 컨테이너

  • namespace 키워드는 관련 개체 집합을 포함하는 범위를 선언하는 데 사용
    • 네임스페이스를 사용하여 코드 요소를 구성하고 전역적으로 고유한 형식을 만들 수 있다!
    • 프로그램 내에서 타입 관리의 복잡성을 줄이고, 여러 라이브러리 간의 타입 이름 충돌 문제를 방지
  • 목적
    • 코드의 조직화 및 관리 (충돌 방지)
    • 다양한 클래스, 구조체, 인터페이스, 열거형 등을 논리적으로 그룹화하는 컨테이너 역할
    • ex. 같은 이름의 클래스를 네임스페이스를 통해 구분할 수 있음

 

선언방법

1. 파일 범위 네임스페이스 선언 (;를 통한)

  • 파일의 모든 형식이 단일 네임 스페이스에 있음을 선언
  • 추가 네임스페이스 선언을 포함할 수 없음!! (주석의 Not allowed! 부분) 
namespace SampleNamespace;

class AnotherSampleClass
{
    public void AnotherSampleMethod()
    {
        System.Console.WriteLine(
            "SampleMethod inside SampleNamespace");
    }
}

namespace AnotherNamespace; // Not allowed!

namespace ANestedNamespace // Not allowed!
{
   // declarations...
}

2. 중괄호를 통한 네임스페이스 선언

  • 중첩된 네임스페이스를 포함한 경우
namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

 

 

사용방법

일반적으로 using 키워드를 통해 사용 

System.Console.WriteLine("Hello World!");

이 코드에서 System은 네임스페이스이고 Console은 해당 네임스페이스의 클래스

using System;

Console.WriteLine("Hello World!"); // 전체 이름이 필요 없음!

 

클래스와 네임스페이스

클래스

  • 객체 지향 프로그래밍(OOP)의 기본 단위
  • 데이터와 메소드를 하나의 캡슐화된 단위로 묶어 관리
  • 변수와 메소드 포함
  • 인스턴스화를 통해 객체를 생성하고, 이 객체를 통해 클래스에 정의한 기능을 실행

당연히 이 둘이 다른 것을 알겠지만,
네임스페이스는 다른 클래스, 메소드, 네임스페이스를 포함할 수 있는 더 큰 범위의 구조임!

간단히 말하면, 네임스페이스는 여러 클래스와 다른 타입들을 그룹화하는 용도로 사용되고,
클래스는 실제 객체의 템플릿 역할을 한다.

따라서 두 구조는 서로 보완적으로 사용되어 프로그램의 구조를 체계적으로 만듦!!

 

 

네임스페이스 키워드 - C# 참조 - C#

네임스페이스 키워드 - C# 참조

learn.microsoft.com

 

'컴공의 일상 > C#' 카테고리의 다른 글

C# [Required] vs required 차이점  (1) 2024.04.22
C# 공부 시작!  (0) 2024.04.11