Нужна помощь и понимание для внутренней работы функциональности класса расширенияC#

Место общения программистов C#
Ответить
Anonymous
 Нужна помощь и понимание для внутренней работы функциональности класса расширения

Сообщение Anonymous »

У меня есть метод, подобный ниже.

Код: Выделить всё

Product[] productArray = {
new Product { Name="Kayak",Price=275M},
new Product { Name="Lifejacket",Price=375M},
new Product { Name="SoccerBall",Price=475M},
new Product { Name="CornerBall",Price=775M}
};
decimal arrayTotal = productArray.FilterByPrice(700).TotalPrices();
< /code>
Это будет вызовать методы расширения Filterbyprice и Total Pprices. < /p>
public static decimal TotalPrices(this IEnumerable products)
{
decimal total = 0;
foreach (Product? prod in products)
{
total += prod?.Price ?? 0;

}
return total;
}

public static IEnumerable FilterByPrice(this IEnumerableproductEnum,decimal minimumPrice)
{
foreach(Product? prod in productEnum)
{
if ((prod?.Price ?? 0) >= minimumPrice)
{
yield return prod;

}
}
}
Мое первое сомнение?
Как компилятор выбрал метод общих цен для выполнения сначала вместо прежнего метода?
Мое второе сомнение?
Пока я отладил код, я понял, что метод TotalPrices называется первым, и он переходит к ниже. > После этого внезапно поток передается в метод фильтров. Тогда доход вернет значение? Как? < /P>
Я хочу знать, как это произошло внезапно? Я упускаю свою внутреннюю работу. Может кто -нибудь, пожалуйста, помогите мне решить мою путаницу.

Подробнее здесь: https://stackoverflow.com/questions/793 ... lass-funct
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»