입력 매개 변수와 관련하여 가장 구체적인 유형을 사용하는 것이 일반적으로 유연합니다. 예를 들어, 모든 메서드가 수행하려고하는 경우 인수로 전달 된 컬렉션의 항목을 열거하면 IEnumerable <T>을 받아들이는 것이 더 융통성이 있습니다.
예를 들어, 고객의 모음입니다 매개 변수 받아들이는 방법 "ProcessCustomers"고려 : 당신이 IEnumerable을 < 고객 >로 매개 변수를 선언하면
public void ProcessCustomers(IEnumerable<Customer> customers)
{
... implementation ...
}
를, 발신자 쉽게 하위 집합에 전달할 수 있습니다 모음으로, 같은 코드를 사용하여 다음 (사전-NET 3.5 : 당신은 람다 식을 사용할 수 있습니다 .NET 3.5) : 일반적으로 MS의 가이드 라인에
private IEnumerable<Customer> GetCustomersByCountryCode(IEnumerable<Customer> customers, int countryCode)
{
foreach(Customer c in customers)
{
if (c.CountryCode == countryCode) yield return c;
}
}
...
ProcessCustomers(GetCustomersByCountryCode(myCustomers, myCountryCode);
...
목록 <에게 T 01을 노출하지 않는 것이 좋습니다를. 이유에 대한 설명은 코드 분석 (FxCop) 팀의 this blog entry을 참조하십시오.
출처
2008-10-07 08:46:43
Joe