جواد مهدی‌نیا 1019 1 کامنت 1401/2/7

قوانین بکارگیری Partial Class در C#

کلاس‌های Prtial که در C# به Partial Class ها معروفند، تعریف و قوانینی دارند که در این مقاله نیوسان وب به توضیحات لازم در خصوص آنها پرداخته می‌شود.

partial class c# چیست؟

Partial Class در C# چیست؟

Partial Class ها یا به فارسی کلاس‌های پارشیال در C# در آن دسته از پروژه‌هایی کاربرد دارند که نفرات به صورت تیمی روی یک سایت یا نرم‌افزار و اپلیکیشن کار می‌کنند. فرض کنید که قرار است دو نفر همزمان با توجه به تخصصی که دارند، قرار باشد روی فایل یک کلاس مشخص کار کنند و کدهای لازم در بخش تخصصی خود را بنویسند تا در صورت لزوم از اعضا و متدهای تعریف شده داخل آن کلاس در سایر بخش‌های پروژه بهره بگیرند و در نهایت پروژه را به نتیجه نهایی برسانند. در این صورت در حال عادی لازم است که هر شخصی صبر کند تا نفر دیگر کارش تمام شود، آنگاه شروع به کار روی همان فایل کلاسی که در خصوص آن صحبت کردیم کار کند. خب همینجا متوجه شده‌اید که این روش کار کردن سبب اتلاف وقت می‌شود و بازدهی کافی را هم ندارد. اما راه چاره چیست و چگونه باید با این مشکل کنار آمد؟ در پاسخ باید گفت که برای حل مشکل ذکر شده، امکانی در C# معرفی شده است که به Partial Class معروف است و شما در صورت دانستن قوانین و قواعد حاکم بر این نوع کلاس‌ها، می‌توانید همزمان روی یک کلاس همنام کار کنید، بدون اینکه مزاحمتی در کار دیگری داشته باشید. اینکه این قوانین و مقررات چه هستند و چگونه باید از این نوع کلاس‌ها بهره بگیرید، در ادامه این مقاله آموزشی از وبسایت نیوسان‌وب، مورد بحث و بررسی واقع خواهد شد.

 

چگونه یک Partial Class ایجاد کنیم؟

در اینجا ابتدا نشان می‌دهیم که چگونه وقتی دو کلاس با نام یکسان در یک پروژه استفاده کنیم، به خطا بر می‌خوریم. تصویر زیر را ببینید که سبب ایجاد خطا می‌شود، چرا که دو کلاس Hello داریم که نام یکسانی دارند.

خطا در بکارگیری partial class

اگر بخواهید این مشکل را حل کنید و از هر دوی آنها در پروژه بهره بگیرید، کافی است که قبل از این کلاس‌ها کلمه کلیدی partial را اضافه کنید و آنگاه از متدهای این کلاس Hello در جایی که نیاز است پس از نمونه سازی از کلاس، استفاده کنید. ;کدهای زیر را ببینید:

    class Program
    {
        static void Main(string[] args)
        {
            Hello hello = new Hello();
            hello.SayHelloWorld();
            hello.SayHelloUniverse();
            Console.ReadKey();
        }
    }
    partial class Hello
    {
        public void SayHelloWorld()
        {
            Console.WriteLine("Hello World!");
        }
    }
    partial class Hello
    {
        public void SayHelloUniverse()
        {
            Console.WriteLine("Hello Universe!");
        }
    }

استفاده از Partial Class شاید به همین سادگی به نظر برسد، اما خب در استفاده از آنها قوانینی وجود دارد که باید با آنها آشنایی کافی داشته باشید تا به نحو صحیحی بتوانید از آنها بهره بگیرید. در ادامه مقاله، قواعد مهم استفاده از کلاس‌های partial برای برنامه نویسان سی شارپ ذکر خواهد شد و برای مثال هم از یک برنامه کوچک کنسول اپلیکیشن استفاده خواهد شد.

8 قاعده مهم در کلاس‌های partial سی‌شارپ

در اینجا 8 قاعده مهم جهت استفاده توسط برنامه‌نویسان سی‌شارپ در کلاس‌های partial ذکر می‌شود:

1- دقت کنید در پروژه‌هایی که قرار است به صورت تیمی کار شود، لازم است که حتما کلاس‌های partial در دو فایل جدگانه با نام فایل متفاوت مثلا Hello1 و Hello2 (در مثال بالا) ایجاد شوند، آنگاه در داخل هر یک، نام کلاس‌ها به نام واحد Hello تغییر یابد و با کلمه کلیدی partial به صورت Partial Class تعریف شود. این را هم در نظر داشته باشید که ممکن است حتی هر کلاس partial، بخش‌های بیشتری داشته باشد نسبت به مثال ما که سامل دو بخش کلاس partial بود.

مثال زیر را ببینید که چگونه ما از یک کلاس سه بخشی (partial) برای اجرای متدهای داخل آنها بهره گرفته‌ایم:

مثال partial class

2- همه کلاس‌های partial باید دارای یک سطح دسترسی یا Access Modifier یکسان باشند؛ ضمن اینکه این نوع کلاس‌ها می‌توانند دو نوع سطح دسترسی public و internal به خود بگیرند.

3- اگر یک بخش یا partial، به صورت کلاس abstract باشد، کلیه partial ها به صورت abstract هستند به این مفهوم که نمی‌توانید از آن کلاس نمونه سازی کنید و به خطای کامپایلری عدم امکان نمونه‌سازی از کلاس abstract یا interface مواجه می‌شوید.

4- اگر یک partial (بخش) به صورت کلاس sealed باشد، کلیه partialهای آن کلاس، به صورت sealed هستند. همانطور که می‌دانید، امکان ارث‌بری یا مشتق شدن از کلاس‌های sealed وجود ندارد.

5- اگر یکی از partialهای متعلق به یک کلاس از کلاس دیگری ارث ببرد، کلیه partialهای آن، از آن کلاس ارث می‌برند و به متدها و اعضای آن می‌توانند دسترسی داشته باشند.

6- همانطور که می‌دانیم، در سی شارپ امکان ارث‌بری چندگانه وجود ندارد؛ به همین دلیل اگر یک partial از یک کلاس ارث ببرد، partial ها دیگر نمی‌توانند از کلاس دیگری هم ارث ببرند.

7- اگر هر یک از partial class‌‌ها از یک interface ارث‌بری کنند، متدهای هر interface می‌تواند در هر یک از کلاس‌های partial پیاده سازی شود و آنچه اهمیت دارد، پیاده شدن همه متدهای آنهاست؛ نه اینکه کدام متد در کدام partial class پیاده‌سازی شود.

8- اعضای استفاده شده در یکی از partialها، در کلیه partialهای دیگر کلاس قابل دسترسی هستند.

همراهان نیوسان وب در این مقاله نکات مهم و ضروری در خصوص کلاس‌های partial را ذکر کردیم. به زودی با یک فیلم آموزشی این قسمت را تکمیل خواهیم کرد تا مطالبی که ذکر کردیم به خوبی ملکه ذهن شما شود و مشکلات احتمالی که ممکن است با آنها مواجه شوید را هم رفع کنیم. لطفا با ارسال نظرات سازنده خودتان ما را در ارائه هرچه بهتر آموزش‌هایمان کمک کنید.

انتشار مطالب این مقاله بدون درج لینک آن، شرعا و قانونا مشکل دارد و در صورت مشاهده، پیگیری‌های لازم انجام خواهد شد.

لینک این مقاله را در شبکه‌های اجتماعی به اشتراک بگذارید.

دیدگاه خود را ثبت کنید

دیدگـاه مخاطبــان
نام: آنده | 1402/8/7

واقعا عالی بود کامل و جامع

پاسخ

نام: جواد | چهارشنبه، 1402/8/10

خواهش می کنم دوست عزیز. در واقع partial class سوالی بود که خودم قبلا در یک مصاحبه کاری برای زبان سی شارپ و asp.net core بهش بر خورده بودم و برای دوستان به اشتراک گذاشتم. موفق باشید.