تبلیغات
میهن وب هاست

آموزش سی شارپ – اپراتورها

نویسنده : امیر

نظرات : ۰ دیدگاه

بازدید : ۴۷۹ بازدید

تاریخ : ۰۲ آذر ۱۳۹۶

در این جلسه از آموزش برنامه نویسی سی شارپ که کمی طولانی هم است قصد بررسی اپراتورها و کاربرد آنها می پردازیم که بعد از این جلسه شما یکی از مباحث سنگین برنامه نویسی سی شارپ را یاد گرفته و می توانید از آن استفاده کنید.

 

حتما قبل از بررسی اپراتورها در سی شارپ نوشته ی مطالب قبلی این دوره ی آموزشی را با هشتگ #دوره آموزشی_سی_شارپ در سایت ما را مطالعه کنید.

 

بررسی Initializers :

Initializers روشی دیگر برای ساخت شیء و مقدار دهی به field ها و property های (در مورد property بعداً بحث خواهیم کرد) کلاس است. با استفاده از object initializers، دیگر constructor کلاس را به روش معمول صدا نمی‌زنید بلکه اسم field ها و property ها را می‌نویسید و مستقیماً به آن‌ها مقدار می‌دهید. استفاده‌ی اصلی object initializers برای anonymous typeهای ساخته شده توسط LINQ است اما در حالت معمول نیز می‌توانند مورد استفاده قرار گیرند.

به مثال زیر توجه کنید:

نکته این‌جاست که از هیچ constructorای استفاده نکرده‌ایم بلکه شیء Man توسط خط کد زیر تولید شده است:

 

بررسی Optional Arguments :

اگر بخواهیم تعداد پارامترهای ورودی دلخواه و بین هیچ تا تعداد پارامتر ورودی تعریف شده باشد.

 

Named Arguments چیست ؟

برای تغییر مکان پارامتر ورودی کافیست نام پارامتری که argument قرار است به آن داده شود را در هنگام ارسال argument مشخص کنید و بعد از این‌کار، دیگر ترتیب argumentها اهمیتی ندارد.
به مثال زیر توجه کنید:

 

معرفی namespaceها :
اجازه می‌دهند به کلاس‌ها و متدهای مختلف و گسترده‌تری از .NET Framework دسترسی داشته باشید؛ در واقع، هر برنامه سی‌شارپ از namespace استفاده می‌کند . سی‌شارپ به‌طور اتوماتیک، یک global namespace برای برنامه شما تعریف می‌کند. یک namespace ناحیه‌ای را مشخص می‌کند که اسامی به کارگرفته شده ،در مجموعه های متفاوت جدا در نظر گرفته شوند. به عبارت دیگر، یک نام در یک namespace با نام یکسانی دیگر در namespace دیگری تداخل پیدا نمی‌کند.
معرفی Operator Overloadingها :
سی‌شارپ به شما اجازه می‌دهد operator (عملگر) هایی تعریف کنید که مرتبط به کلاس‌هایی است که خودتان می‌سازید. به این پروسه، operator overloading گفته می‌شود. هنگامی‌که یک عملگر overload می‌شود، معنای واقعی خودش را از دست نمی‌دهد. بلکه فقط کاربرد آن به یک کلاس افزوده می‌شود. بنابراین (به‌عنوان مثال) overload کردن عملگر + برای افزودن یک شیء به انتهای لیست پیوندی، دلیل نمی‌شود که عملکرد آن operator برای جمع کردن دو عدد صحیح تغییر کند. مزیت اصلی operator overloading این است که به شما اجازه می‌دهد به‌طور یکپارچه، یک کلاس جدید را در محیط برنامه‌نویسی خود، ادغام کنید. این ویژگی که به آن type extensibility می‌گویند.

اصول Operator Overloading :
Operator overloading شباهت زیادی با Method overloading دارد. برای overload کردن یک عملگر، از کلمه‌ی کلیدی operator برای تعریف یک operator method استفاده می‌کنیم که برای یک عمل خاص، مربوط به کلاس خودش، تعریف می‌شود. دو حالت از operator method وجود دارد: unary operators (عملگرهای تکی) و binary operators (عملگرهای دوتایی). فرم کلی هرکدام را در زیر می‌بینید:

 

نکته :

  • عملگری که آن را overload می‌کنید، مثل + یا / ، جایگزین op می‌شود. ret-type مشخص کننده‌ی نوع مقداری است که return خواهد شد.
  • اگرچه return type می‌تواند از هر نوعی باشد اما اغلب از نوع همان کلاسی است که operator در آن overload می‌شود.
  • توجه داشته باشید که operator method ها باید public static باشند.
  • در unary operator ها، نوع عملوند (operand) باید با نوع کلاسی که operator در آن تعریف می‌شود، یکسان باشد. بنابراین نمی‌توانید operatorهای سی‌شارپ را برای اشیایی که خودتان نساخته‌اید، تعریف کنید.
  • operator parameters نباید از ref و out استفاده کنند.

 

مثال :

وقتی‌که مختصات اشیاء، درون ()+operator باهم جمع می‌شوند، حاصل جمع x و y ، عدد صحیح است. درواقع ، عملگر + که برای اشیای TwoD ، overload شده است تاثیری بر عملگر + که روی اعداد صحیح اعمال می‌شود ندارد.

Unary Operatorها مانند Binary Operatorها overload می‌شوند و با این تفاوت که در Unary Operators تنها یک operand وجود دارد.

فرم کلی Unary Operators به‌شکل زیر است:

به‌عنوان مثال متد زیر، unary minus را overload می‌کند:

مثال :

شما می‌توانید operator methods را هم overload کنید. رایج‌ترین دلیل آن این است که با این کار این امکان را فراهم می‌کنید تا عملیات بین یک class type (مثل کلاسی که خودتان تعریف کردید) و یک built-in type (یک type که در دات نت موجود است، مثل int) انجام شود.

به این دلیل که argument عدد صحیح، دومین argument است. برای این‌که هر دو عبارت برای استفاده مجاز باشند، باید یک بار دیگر + را overload کنید. این‌بار باید اولین پارامتر را int و دومین پارامتر را TwoD در نظر بگیرید.

 

برای استفاده از تمامی جلسات از هشتگ #دوره آموزشی_سی_شارپ در سایت ما استفاده کنید.

منتظر جلسه ی بعدی دوره آموزشی سی شارپ باشید.

موفق و پیروز باشید.

با دوستانتان به اشتراک بگذارید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code

مطالب زیر را از دست ندهید: