본문 바로가기

Tools/Tool사용하기

VS2010 및 C # 4.0 간단하지만 흥미로운 기능

http://www.codeproject.com/KB/cs/VS2010InterestingFeatures.aspx

위에서 퍼온 글입니다.


소개

VS 2010 C # 4.0은 많은 새로운 기능을 발표했다.  나는 둘 다 아주 간단하면서도 매우 유용한 기능을 소개하려한다.

1. 코드의 선택한 부분을 숨기기 

Region이라는 태그를 사용하는 방법 외에 VS2010에서는 선택된 부분을 숨김처리하는 기능이 들어있다. 숨기고자 하는 영역을 선택한 다음 오른쪽 마우스 클릭 Outlining -> Hide Selection을 선택하면된다.

위의 기능으로 숨긴영역을 해제할때는 오른쪽 마우스 Outlining -> Stop Hiding Current를 선택하면된다.

2. DataTips

이 옵션은 디버깅할때 변수를 볼수있는 방법을 제공합니다. 2010에서 DataTip은 고정될수 있고 어떤 위치로든 옮겨질수 있습니다. 이러한 기능은 변수값들을 모니터링할때 매우 편리합니다. 디버깅세션이 끊기기전까지는 많은 DataTips들을 띄워놓을 수 있습니다.

DataTip을 고정하기 위해서 해당 변수에 마우스를 올려놓고 아래의 그림처럼 고정핀을 클릭해주면 디버깅 동안 사라지지 않습니다.

고정된 핀은 사용자 마음대로 옮겨놓을수 있습니다. 핀은 3가지 버튼 닫기를 제공하는데 Unpin은 고정된것을 제거하는것이고 Expand는 코멘트를 적을수 있는기능입니다.

디버깅동안 값들을 볼수있다는것은 우리에게 대단한 도움을 줍니다.

심지어 DataTip들을 디버깅하는동안 Export/Import할수 있습니다. 내보내기는 Debug ->Export DataTips ->지정경로. Import는 Debug -> Import DataTips를 선택하시면 됩니다.

3. String.IsNullOrWhiteSpace

이 기능은 string값이 비었거나 null이거나 빈공백으로 채워졌을때 체크하는 기능입니다. 또한 아래의 것들이 포함되면 값은 true을 반환합니다.

  • \n” for new lines
  • \r” for carriage returns
  • \v” for vertical spaces
  • Normal spaces
  • \t” for tab characters 

4. 이름 및 선택적 매개 변수

디폴트 값들이 함수에서 할당 됐다면 파라미터들은 선택사항들이 될수 있습니다. 

위의 함수에서 우리는 Val1과 Val2를 입력할지 안할지 선택할수 있습니다. 우리가 파라미터를 쓸때 인텔리센스는 
친절하게도 파라미터가 선택사항인지 아닌지 나타내 줍니다. 

명명된 인자값들은 순서와 상관없이 이름만 안다면 사용하실수 있습니다. 인텔리센스가 이러한 명명된 인자값들을 콜론구분자로 아래와 같이 표시해 줍니다.

아래의 메서드는 선택파라미터와 명명된 인자값들을 사용하는것을 보여주고 있습니다.

5. 하이라이트

어디 코드에서 식별자를 선택하고 식별자가 사용하는 모든 장소가 강조옵니다.

아래의 예제에서, 나는 식별자 선택 Val2을 하고 모든 용도가 자동으로 강조 표시됩니다.

6. URL 라우팅

URL 매핑은 ASP.NET 2.0에서 어느 정도 가능했지만 PostBack발생시 실제 URL경로가 보이는 문제점이 있었습니다. 

URL 라우팅은 ASP.NET 3.5에서 도입되었는데 . 위와같은 문제점은 해결됐지만 다른 핸들러 클래스를 생성해야하는 번거로움이 있습니다.

ASP.NET 4.0에서는 각 라우팅에 필요한 핸들러 클래스를 없앴고 대신 MapPageroute라는 빌틴 헬퍼클라수가 있습니다. 이러한 라우터들은 Application_Start에서 등록되어야합니다.

그럼 간단한 예제를 한번 해보겠습니다. default 와 default2의 2개의 페이지를 만들고 각각의 페이지에 버튼을 추가하고 버튼을 눌렀을때 이동하는 것을 해보겠습니다. 먼저 Application_Start에서  브라우저에 보이고 싶은 URL을 아래와 같이 등록합니다.

default페이지는 MyfirstPage/Value라는 URL을 갖을것이고 default2는 MySecondPage/Value Url을 갖을 것입니다.

default페이지에서 버튼 클릭을 하면 default2로 이동하는 코드를 아래와 같이 작성하였습니다.

protected void btnBack_Click(object sender, EventArgs e)
{
    Response.Redirect(ResolveUrl("~/MySecondPage/") + "An");
}

여기서 "An"은 Name파라미터의 값입니다. 그리고 default2에서는 default페이지로 다시 이동합니다.

protected void btnMove_Click(object sender, EventArgs e)
{
    Response.Redirect(ResolveUrl("~/MyFirstPage/") + "Test");
}

위처럼 라우팅이 좀더 간편해 졌고 하나이상의 파라미터들을 넘길수 있습니다.

8. 동적 언어 지원

동적 언어는 컴파일 타임에 타입검사를 하지않고 런타임시에만 검사를 합니다.  이런한 것은 보다 빠르고 작성하기 쉽지만 컴파일타임에 에러를 잡아내질 못합니다. 그리하여 꼭 어플리케이션이 예상대로 작동을 해야하는지 확인해야합니다.

기존의 C#버전들은 스테틱언어로고할수 있습니다. 하지만 4.0에는 dynamic이라는 요소를 지원해 주고 있습니다. 
dynamic 키워드를 사용하면 이 의미는 컴파일러에게 컴파일 타임에 타입을 체크하지 말라는 뜻입니다. 

그럼 var와 dynamic 타입과는 어떤 차이점이 있을까요 

Object Dynamic Var
컴파일러는 변수의 유형에 대한 약간의 정보를 가지고있다 컴파일러는 아무저오를 가지고 있지 않다. 컴파일러는 완전한 정보를 가지고있다
변수는 사용되기 전에 캐스팅이 필요합니다 캐스팅 필요없음 컴파일러가 이미 완전한 정보를 가지고 있는 한 캐스팅 필요없음
데이터의 타입에대한 충분한 정보가 없을 때 사용성이 좋음 보다 적은 코드를 작성하고
싶을 때 Dynamic언어사용 
보통 Linq와 함께 사용

결론

위의 언급한 기능들을 중심으로 샘플 어플리 케이션을 작성하였습니다. 이게 끝이 아니라 VS2010 기능의 시작일 뿐입니다. 그리고 위의 기능들을 깊게 들어가면 갈수록 더 많이 탐구할게 있을 것입니다.