Loading...
DESAN avatar DESAN 4 Точки

09. List Of Predicates Каде е правилното място на предикатите по принцип и защо?

Здравейте решаввам ей тази задача(09. List Of Predicates) и се чудя следното нещо:

Вариант 1: Предиката е дефиниран извън вътрешния фориич и последния тест гърми за време.

Вариант 2: Предиката е дефиниран във вътрешния фориич и последния тест не гърми (ала обърната кофа). Според мен това е по-кофти откъм перформънс, защото ще се изпълни това дефиниране повече на брой пъти. Би следвало и двата начина, да нямат, кой знае какво значение ама имат... въпроса ми е защо има значение това нещо?

Като цяло не ми е ясно има ли някакво преимущество предиката и трябва ли ми ако мога да ползвам Func<колкото и каквото искам, bool> вместо Predicate<само 1 нещо+ един бол (евентуално) неща дето да се ползват от околната среда> ?

0
C# Advanced 23/12/2018 18:08:53
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки
Best Answer

така кое защо няма нищо общо. При първия вариант ти гърми защото пазиш през цялото време в стак-а тоя predicate, а в втория вариант го съзвадаш и извикваш само в рамките на foreach-a не заема място в stack-a и не ти създава проблем.

Сега защо е така, при първия вариант ти го създаваш и когато стигаш до проверката в foreach-a compilera го търси по референция и тн, А втория път го създаваш и ползваш тои знае къде е защото е в рамките на {  } това е блок код и компилера не търси никъде нищо и памета ти не е запълнена  и тн. Все пак compiler-a минава ред по-ред. И затова judge не ти се сърди.

А иначе в момента с последните промени не съм сигурен,честно казано как да отговоря на 2та част от въпроса ти. Но като цяло func ще свърши същото което и predicate-a той реално func-a e func<int,Predicate> divisible=...

отдавна ги карах тея неща и макар че ги разбирам ми е трудно да ти кажа,кое е по - правилно но реално само predicates никога не ползвам, или си е bool или func action зависи какво ми трябва.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.