2013-03-13 1 views
5

C#에서는 네임 스페이스에 using directive을 추가하면 특정 네임 스페이스의 모든 유형에 액세스 할 수 있습니다. 그러나 네임 스페이스에 많은 유형이 있고 하나만 필요로하는 경우에는 사용하지 않을 불필요한 클래스를 사용하고 싶지 않다고 생각하는 정규화 된 이름을 사용합니다 (특히 성능상의 이유로 에 해당 네임 스페이스에 많은 항목이 있습니다. 나는 성능에 어떤 영향을 주어야한다고 생각했었다. (아무리 짧게해도) 반대하지 않고 사용할 수있게 만들지 만 얼마만큼? (실제로 하나 인 경우). 그렇다면 그 곳 곳곳에서 이것을하는 것은 나쁜 습관이 될 것입니다. 왜냐하면 눈에 띄는 것 (성능 현명)에 축적되기 시작하지 않기 때문입니까?C#에서는 'using'지시어와 정규 표현식을 사용하는 것이 더 효과적입니까?

using 지시어와 정규화 된 이름을 사용하는 것에 대해 other SO post을 보았지만 성능과 관련이 없습니다.

+2

지시문을 사용하여 추가해도 런타임 성능에는 영향을 미치지 않습니다. http://stackoverflow.com/questions/14580606/performance-impact-of-unused-using-directives-in-c-sharp – Sam

+0

잘 모르겠다. 문법 설탕의 유일한 문제 일까? –

답변

16

using 지시문은 컴파일하는 동안 사라지는 구문 설탕입니다. 네임 스페이스가 using을 통해 포함되었거나 정규화 된 형식 이름에 언급되었는지 여부는 결과 바이트 코드와 전혀 관련이 없습니다. 따라서 하나 또는 다른 것을 사용하면 런타임에 성능 이점이 없습니다.

7

차이는 없습니다. 힘

그것은 은 (msbuild를 실행시에로) 컴파일러의 성능에 (즉, 아마 측정되지 않음)에 거의 영향을 미치지/이점을 가지고 있지만,이 코드에 구운 것 같은 런타임에 IL 명시 적으로 의도 유형을 알고 타입 핸들로서. 리플렉션을 사용하지 않는 한 유형을 '검색'하지 않습니다.

+2

사소한 용어지만, "명시 적으로"의도 된 유형을 알고 있다고 말할 수 있습니다 ... –

+0

그래 좋은 지적 –

3

나는 반드시 말해야합니다. 컴파일러는 동일한 IL 코드를 생성하므로 걱정할 필요가 없습니다.

0

그게 다릅니다.

using 지시문을 사용하면 코드를 더 빨리 작성할 수 있습니다. 그러나 예를 들어 using 지시문을 사용하는 이름 공간이 2 개 있고 이름이 같고 서명이 동일한 메소드가있는 경우 문제가 발생합니다.

정규화 된 참조를 사용하면 코드를 더 쉽게 이해할 수 있습니다.

+1

또한 내 대답을 떨어 뜨리는 이유를 진술하십시오 :) –