Софтуерно Инженерство
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 1284 Точки
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