직장에서 일부 코드를 유지하고 있으며 원래 작성자가 없어서 내가 호기심을 만족시킬 수 있는지 여기에서 질문 할 것이라고 생각했습니다.이 경우 yield를 사용하면 어떤 이점이 있습니까?
아래는 수익률이 사용되는 약간의 코드 (익명 처리)입니다. 늘어나는만큼 내가 그것을 말할 수있는 어떤 이점을 추가하지 않고 그냥 목록을 반환 충분하고 어쩌면 (적어도 나를 위해 더) 읽을 수있을 것입니다. 이 패턴이 코드 기반의 몇 군데에서 반복되기 때문에 무언가를 놓치고 있는지 궁금합니다.
var productManager = new ProductManager(ValidProductTypes);
public ProductManager(IEnumerable<string> validProductTypes)
{
var myFilteredList = GetFilteredTypes(validProductTypes);
}
public ObservableCollection<ValidType> GetFilteredTypes(IEnumerable<string> validProductTypes)
{
var filteredList = validProductTypes
.Where(type => TypeIsValid); //TypeIsValid returns a ValidType
return new ObservableCollection<ValidType>(filteredList);
}
열거가 완료되지 않은 경우, 예를 들어 FirstOrDefault와 같이 이익이 발생하지 않을 수도 있지만 이후의 수익률에 대해 잠재적 인 비용이 많이 드는 실행이 모두 실행되지는 않습니다. 목록에 올랐어. 이 경우 Type2가 무거운 속성이지만 열거 형이이를 소비하지 않으면 목록보다 가벼워집니다. –
IMHO, 그 시나리오는 간단한 배열로 더 잘 구현됩니다. 반복기 메소드 구문이 아무 것도 추가하지 않는다고 느낍니다. 그러나 그것은 주로 의견의 문제입니다. 여기서 해결할 실제적이고 실질적인 프로그래밍 _ 문제가없는 것 같습니다. –