PDA

View Full Version : نقش واسط هنگام ورود متن به داخل کلاسی که تعهد اجرای آن واسط را بر عهده گرفته؟



habibb
یک شنبه 10 آذر 1392, 11:27 صبح
AddExpression((IEvaluatable)new Expression(text), true)

این کد چی داره می گه؟
اگر IEvaluatable واسط باشه
و Expression کلاسی که نقش واسط IEvaluatable را بر عهده گرفته؟
متن text کجا میره؟

habibb
یک شنبه 10 آذر 1392, 22:06 عصر
واسط چرا اینجا ظاهر شده ؟
نیو شدن برای چیست ؟

plus
یک شنبه 10 آذر 1392, 22:24 عصر
متد 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);