[c#] C # 메서드 명명 규칙 : ToSomething 대 AsSomething

비즈니스 로직 객체에 대한 확장 메서드를 작성하면서 변환 메서드의 이름을 바꾸는 문제에 도달했습니다. someObject.ToAnotherObject()널리 사용되는 object.ToString().

그러나 예를 들어 LINQ는 두 변형을 혼합하여 차이점을 찾을 수 없습니다. ToDictionary(), ToList(), AsParallel(), AsQueryable(), …

이 두 가지 명명 규칙의 차이점은 무엇이며 내 클래스에 사용할지 여부를 결정하려면 무엇을 알아야합니까?



답변

ToDictionary그리고 ToList접두어 To가 반드시 원래의 수집 또는 속성의 구조 정체성을 보존하지 않기 때문에.

  • 를로 변환하면 완전히 새로운 구조의 컬렉션 List<T>Dictionary<K, V>생성됩니다.
  • 변형 HashSet<T>(A) 내로하면 List<T>세트의 고유성 속성을 제거한다.

접두사가 붙은 메서드 As는 이러한 작업 을 수행하지 않습니다. 단순히 원본 컬렉션 의 대체 보기 를 제공합니다 . 그들은 그것을 풍부하게합니다.


답변

Linq에서 ToXXX메서드는 모두 쿼리를 실행하고 결과에서 새 개체를 만드는 반면 AsXXX메서드는 어떤 방식 으로든 다른 새 쿼리를 생성합니다. 그것은 동일한 개체 수 있지만 (다른 인터페이스를 통해 액세스 할 수 있습니다 AsEnumerable()이 수행) 또는 새로운 객체가 될 수 달라져 기능 (다른 방법 그들은 단지 주어진 객체를 반환 할 경우 몇 가지 검사를 볼 수 있지만 예를 들어,이 작업을 수행 할 AsQueryable()것입니다 이미 source구현되어 있으면 반환 IQueryable<T>하거나 EnumerableQuery<TElement>그렇지 않으면 새로 만듭니다 ).


답변