문제

예를 들어 Datagrid가 아닌 System.Data.Datagrid를 참조합니다.예시와 설명을 부탁드립니다.감사해요.

도움이 되었습니까?

해결책

이점은 사용하는 모든 항목에 대해 가져오기를 추가할 필요가 없다는 것입니다. 특히 특정 네임스페이스에서 사용하는 유일한 항목인 경우 충돌도 방지됩니다.

물론 단점은 특정 한정자를 사용할수록 코드의 크기가 커지고 읽기가 더 어려워진다는 것입니다.

개인적으로 나는 특정 네임스페이스의 항목을 한두 번만 사용할 것이라는 확신이 없으면 대부분의 경우 가져오기를 사용하는 경향이 있으므로 코드의 가독성에 영향을 미치지 않습니다.

다른 팁

참조하는 유형에 대해 매우 명확하게 설명하고 있으며 이는 이점입니다.비록 동일한 프로세스에서 코드 명확성을 포기하게 되지만, 이는 코드를 읽고 이해할 수 있기를 원하기 때문에 제 경우에는 분명히 단점입니다.클래스를 명시적으로 참조해야만 해결할 수 있는 다른 네임스페이스에서 충돌이 발생하지 않는 한 짧은 버전을 선택합니다.다음을 사용하여 키워드로 별칭을 만들지 않는 한:

using Datagrid = System.Data.Datagrid;

실제로 전체 경로는 global::System.Data.DataGrid.더 정규화된 경로를 사용하는 이유는 특히 다른 using을 도입하면 형식 확인에 문제가 발생할 경우 추가 using 문을 사용하지 않아도 된다는 것입니다.명시적이어야 할 때 명시적으로 지정할 수 있도록 더 정규화된 식별자가 존재합니다. 그러나 클래스의 네임스페이스가 명확한 경우에는 DataGrid 버전이 많은 사람들에게 더 명확합니다.

나는 일반적으로 코드를 최대한 깔끔하고 읽기 쉽게 유지하기 위해 사용 가능한 가장 짧은 형식을 사용합니다.결국 이것이 using 지시어의 목적이며 VS 편집기의 도구 설명은 유형의 출처에 대한 즉각적인 세부 정보를 제공합니다.

또한 COM 상호 운용성 계층에서 RCW에 대한 네임스페이스 태그를 사용하여 코드에서 해당 변수를 명시적으로 호출하는 경향이 있습니다(수명 주기 및 수집에 특별한 주의가 필요할 수 있음).

using _Interop = Some.Interop.Namespace;

성능면에서는 장/단점이 없습니다.모든 것은 컴파일 타임에 해결되며 정규화된 이름을 사용하는지 여부에 관계없이 생성된 MSIL은 동일합니다.

.NET 세계에서 이 기능이 널리 사용되는 이유는 디자이너 마크업과 같은 자동 생성 코드 때문입니다.이 경우 코드에 있을 수 있는 다른 클래스와의 충돌 가능성 때문에 클래스 이름과 같은 정규화된 이름을 사용하는 것이 더 좋습니다.

ReSharper와 같은 도구가 있는 경우 실제로 불필요한 정규화된 참조가 무엇인지 알려줍니다(예:회색으로 표시하여) 잘라낼 수 있습니다.다양한 코드 베이스에서 코드를 자주 잘라내어 붙여넣는 경우 해당 코드를 정규화하는 것이 필수입니다.(그렇다면 왜 항상 잘라내어 붙여넣기를 하시겠습니까?이는 나쁜 형태의 코드 재사용입니다!)

나는 실제로 단점이 있다고 생각하지 않습니다. 단지 가독성과 실제 코딩에 소요되는 시간이 다를 뿐입니다.일반적으로 모호한 개체가 포함된 네임스페이스가 없으면 실제로는 필요하지 않다고 생각합니다.고려해야 할 또 다른 사항은 사용 수준입니다.리플렉션을 사용하는 메서드가 하나 있고 System.Reflection을 10번 입력해도 괜찮다면 큰 문제는 아니지만 네임스페이스를 많이 사용할 계획이라면 포함을 권장합니다.

상황에 따라 추가 한정자는 경고를 생성합니다(중복을 의미하는 경우).그런 다음 경고를 오류로 처리한다면 이는 매우 심각한 단점입니다.

예를 들어 저는 GCC에서 이런 문제를 겪었습니다.

struct A {
    int A::b; // warning!
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top