본문으로 바로가기

[ASP.NET] 7.네임스페이스

category Program/ASP.NET 2017. 3. 2. 11:41


네임스페이스

한 낱말이 분야에 따라 다르게 해석되는 경우가 많다. 실세계를 바탕으로 추상화된 클래스도 어떤 분야에서 모델링했는지에 따라 같은 이름이 전혀 다른 모습을 띠고 있을 수 있다. 이를 구분하기 위해 사용하는 것이 '네임스페이스(namespace)'이다. 


네임스페이스의 정의

네임스페이스는 namespace 키워드를 사용하여 다음과 같이 정의한다.


namespace Banking{

public class Customer { }

}


네임스페이스의 중첩

네임스페이스 내에 또 다른 네임스페이스가 올 수 있다. 그러나 클래스 내에는 네임스페이스를 넣을 수 없기 때문에 네임스페이스에 대한 코드 조각은 단일 파일 페이지 모델로 설정된 TestCode.aspx 에서 사용할 수 없다.


namespace System{

namespace Web{

namespace UI{

public class Page : TemplateControl, IHttpHandler{ }

}

}

}


중첩된 네임스페이스는 다음과 같이 간단하게 표현할 수 있다.



namepsace System.Web.UI {

public class Page : TemplateControl, IHttpHandler{

}

}


다른 네임스페이스에 있는 클래스 사용하기

다른 네임스페이스 내에 있는 클래스를 사용하는 방법은 다음과 같다. 


namepace Banking{

public class Customer{

private string m_Name;

public void SetName(string name){ m_Nmae = name; }

public string GetName(){ return m_Name; }

}

}


namespace Medical{

public class MedicalCustomer{

Banking.Customer m_Customer;

public void RegisterCustomer(string name){

m_Customer = new Banking.Customer();

m_Customer.SetName(name);

}

public string GetName(){ return m_Customer.GetName(); }

}

}


위의 예에서와 같이 다른 네임스페이스 내에 있는 클래스는 '네임스페이스.클래스명'으로 사용한다. 매번 네임스페이스를 사용하여 참조하는 것은 번거로운 일이므로, 이때 사용하는 것이 'using 지시자'이다. 위의 코드를 using 지시자를 이용하여 바꾸면 다음과 같다.


using Banking;

namespace Medical{

public class MedicalCustomer{

Customer m_Customer; // Banking 네임스페이스에 정의된 클래스형 사용.

public void RegisterCustomer(string name){

m_Customer = new Banking.Customer();

m_Customer.SetName(name);

}

public string GetName(){ return m_Customer.GetName(); }

}

}


using 지시자의 특징은 다음과 같다.

  • using 지시자 뒤에는 네임스페이스명만 올 수 있다.
  • using 지시자의 뒤에는 클래스를 지정할 수 없다.
  • 프로그램의 첫 부분에 선언해준다.


'Program > ASP.NET' 카테고리의 다른 글

[ASP.NET] 9. GET방식 POST 방식  (0) 2017.03.06
[ASP.NET] 8.웹 폼의 동작 원리  (0) 2017.03.02
[ASP.NET] 6. 객체 지향 프로그래밍  (0) 2017.02.28
[ASP.NET] 5. 웹 페이지 코드 쓰기  (0) 2017.02.23
[ASP.NET] 4. HTML의 이해  (0) 2017.02.23