using에 대해서 다시 체크
요즘 다시금 프로그래머로 살아야 할것(?)같네요.
이번에 c#.net을 공부하면서
using 의 다른 활용을 보게 되었습니다.
즉, 가장 많이 쓰이는
c#.net에서 제공하는 System namespace 이나 개발자가 만든 namespace 호출 등의 활용 외
(System.Data / System.Windows.Forms 등 등, C/C++ 에서 쓰이는 #include같은, 자바에선 import)
Ex)
프로그래밍 문장 중간에서도 쓰이는 걸 다시금 인식했네요...
이래저래 학습 및 자료찾아보다가
네이버 선생에서 검색해서 확인했습니다. (물론 습득했다는건 아니고...)
----------------
▶ C#에서 using 의 용도는?
using 지시어는 두 가지 용도로 사용됩니다.
1. 네임스페이스(namespace)에 있는 타입을 사용할 수 있도록 허용합니다.
그래서 네임스페이스에 있는 타입을 이용하는데 있어 제한을 가하지 않습니다.
using System.Text; <- 위에서 얘기했고 가장 많이 쓰일
2. 네임스페이스나 타입에 대한 별칭을 만들 수 있습니다.
using Project = PC.MyCompany.Project;
3. 또한 using 키워드는 using 구문(using statement)을 만드는데 사용됩니다.
이 using 구문은,
파일과 폰트 등과 같이 자원(Resource)을 다루며, IDisposable 인터페이스를 구현한 객체가 올바르게 조작됨을 보장합니다.
using (GraphicsPath path = new GraphicsPath() ) { ... }
- 그리고 추가로 설명된 내용 -
▶ C#에서 namespace 란 무엇일까요?
namespace 라는 키워드는 범위를 선언하기 위해 사용됩니다.
namespace 에 포함된 범위 안에서 코드를 조직할 수 있으며, C(++) 언어에서 전역 변수와 같이 유일한 타입을 만들 수 있습니다
네임스페이스는 두 가지 범주로 나뉩니다.
사용자 정의 네임스페이스와 시스템 정의 네임스페이스입니다.
사용자 정의 네임스페이스는 여러분이 직접 코드에서 정의한 네임스페이스입니다.
예를 들어 보죠.
namespace MYNAME
{
// 여러분에게 필요한 코드나 타입을 정의할 수 있습니다.
clase MyClass
{
//MyClass 클래스 타입을 정의합니다.
}
}
이렇게 여러분이 직접 정의해서 만든 네임스페이스가 사용자 정의 네임스페이스입니다.
시스템 정의 네임스페이스는 .NET 프레임워크 클래스 라이브러리 참조를 찾아보시면 됩니다.
[그림 1] 은 Viusal Studio 2005 개체 브라우저를 통해 .NET 클래스 라이브러리 구성 요소를 살펴본 것입니다.
[그림 1] .NET 프레임워크 클래스 라이브러리
다음 코드에서 보면 using 키워드를 이용해서 시스템 네임스페이스를 이용한다고 선언한 것을 알 수 있습니다.
네임스페이스를 편하게 사용하려면, using 키워드를 이용하면 됩니다.
using System;
using System.Collections.Generic;
using System.Text;
namespace usingAndnamespace
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("HELLO?");
Console.WriteLine("HELLO?");
}
}
}
즉, 다음처럼 두 가지 코드도 허용되지만 두 번째 문장이 간결하고 타이핑도 덜 치고 낫습니다.
① System.Console.WriteLine("HELLO?");
② Console.WriteLine("HELLO?");
두 번째 문장처럼 하려면,
using System;
당연히, using 키워드를 이용해서 사용하고자 하는 클래스를 포함하는 네임스페이스를 지정해줘야 합니다.
-----------------------
추가적으로 namespace에대해서도 다시 체크해봤지만
아직도 잘 모르겠네...
'프로그래밍&IT > C#' 카테고리의 다른 글
코드 리팩토링(refactoring) 관련 & 메소드 추출하기 (0) | 2014.11.16 |
---|---|
C# 접근 제한자 / 접근자 관련 (private, public, protected ...) (0) | 2014.11.15 |
논리 연산자 우선순위 (0) | 2014.05.10 |
DateTime 클래스 (0) | 2014.05.08 |
C# 숫자결과의 출력 포맷 지정 (0) | 2014.01.04 |