متد AddExpression دو ورودی میگیره.اولی، باید شی ای از کلاسی باشه که IEvaluatable رو پیاده سازی کرده. دومی هم که پارامتر از نوع boolean هست...
خوب، از اونجا که نوع شی پارامتر اول باید IEvaluatable رو پیاده کرده باشه، انتظار میره که کلاس Expression اینطور باشه. با استفاده از new یک شی از کلاس Expression ساخته میشه و text به سازنده اون شی داده میشه.بعد از اون شی ساخته شده به عنوان پارامتر اول به متد AddExpression داده میشه.چیز دیگه ای که اینجا هست اینه که شی ساخته شده قبل از ارسال به متد، به نوع IEvaluatable به صورت سریح (explicit) تبدیل (cast) شده که ضروری هم نیست نوشتنش ولی به نظر میاد نویسنده میخواسته تاکید کنه که شی Expression ساخته شده به عنوان یک IEvaluatable به AddExpression ارسال میشه...بنابراین این کد معادل با کدی هست که گذاشتین:
AddExpression(new Expression(text), true);
---- OR
Expression myExpression = new Expression(text);
AddExpression(myExpression, true);
---- OR
IEvaluatable myExpression = new Expression(text);
AddExpression(myExpression, true);