본문 바로가기

프로그램&DB/C#

박준호님의 C# 강좌 - Namespace

  • Namespace

    • class와 각종 data type들을 그 연관성에 따라 그룹화시키는 논리적인 개념

    • Namespace를 중첩시켜 계층적인 data type을 구성

    • class의 이름 충돌을 해결하기 위한 용도로 사용

    • Namespace를 사용할 경우 이름이 길어지게 되는데, 이것을 해결하기 위해 Namespace Alias를 통해 Namespace의 별칭을 지정할 수 있다.

    • namespace에 포함될 수 있는 것

      • namespace, class, interface, struct, enum, delegate

 

  • Namespace의 범위

    • class는 그 class가 참조될 수 있는 범위를 가지고 있다.

    • namespace가 지정되지 않으면 같은 namespace에서 처리

 using System;

 class Utility{          // 이 두개의 class는 default namespace에 속한다.

          public void DisplayString(){  Console.WriteLine("Hello")};

 }

 

 class Myclass{

          public static void Main(){

                     Utility util = new Utility();

                     util.DisplayString();

 

                     System.Threading.Thread.Sleep(100000); // 다른 namespace class

          }

}

 

  • class 이름이 중복될 때

    • Application은 수많은 class들로 이루어지고, class의 이름이 중복되는 상황이 발생 할 수 있다.

    • namespace를 사용하지 않는다면, class의 이름을 서로 다르게 지정할 수 밖에 없다.

 public class Project1Utility{

             .............

 }

 

 public class Project2Utility{

             .............

 }

 

 // 복잡한 이름으로 사용이 불편

 namespace MyCompany.Project1{

             public class Utility{

             }

 }

 

namespace MyCompany.Project2{

             public class Utility{

             }

}

 

  • 단일 Namespace의 선언 및 사용

 namespace Project1{

             public class Utility{

                         public void DisplayString(string srt) {  ........ } ;

             }

}

 using Project1;

 namespace Project2{

             public class MyClass{

                          public static void Main(){

                                       Utility util1 = new Utility();  // using 키워드를 사용한 참조

                                       Project1.Utility util2 = new Project1.Utility();

                                       util1.DisplayString("Hello World~!");

                          }

             }

}

 

  • 중첩된 Namespace의 선언

 namespace MyCompany

                namespace Project1{

                             public class Utility{

                             }

                }

 }

                                                                               

 namespace MyCompony

                namespace Project2{

                             public class Utility{

                             }

                }

 }

 namespace MyCompany.Project1{

                 public class Utility{

                 }

 }

 

 namespace MyCompany.Project2{

                 public class Utility{

                 }

 }

 

 

 

 

 

 

  • Namespace의 사용과 Alias

 using MyCompany.Project1;

 

 // ....

 Utility util1  = new Utility(); // using 키워드를 사용한 참조

 MyCompany.Project1.Utility util2 = new MyCompony.Project1.Utility();

 System.Threading.Thread.Sleep(100000);

 using A1 = MyCompany.Project1; // namespace alias 정의

 

 // ....

 A1.Utility util2 = new A1.Utility(); // namespace alias 사용

 

 

[첨부 파일 : 소스 파일]

 

출처 : (주)인터데브 솔루션 개발 사업부 박준호님의 C# 동영상 강좌