مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

hasan68

عضویت از 1397/12/06

تعریف متد با ورودی چندین نوعی (in multiple type)

  • دوشنبه 13 اسفند 1397
  • 11:38
تشکر میکنم

سلام عزیزان

هنگام تعریف متد جدید در سی شارپ بایستی نوع و نام تک تک ورودی هارو مشخص کنیم

حالا اگه نوع ورودی چندین مدل بود چجوری تابع رو بنویسیم

مثلا

private void PopulateTreeView(int ID, (TreeNode,TreeView) Node)
        {
            Node.Nodes.Add("X");
        }

نوع Node رو چی بذاریم؟

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

محمد اردوخانی

عضویت از 1396/05/17

  • سه شنبه 14 اسفند 1397
  • 09:56

با سلام

2 روش رو میتونین امتحان کنین

اول اینکه از method overloading استفاده کنین بدین صورت :

private void PopulateTreeView(int ID, TreeView Node)
        {
            Node.Nodes.Add("X");
        }

        private void PopulateTreeView(int ID, TreeNode Node)
        {
            Node.Nodes.Add("X");
        }

روش دوم اینکه میتونین ورودی دوم رو به عنوان یه Object بگیرین و با چک کردن type اون object عملیاتتون رو انجام بدین

اما روش اول رو بیشتر توصیه میکنم

کاربر سایت

hasan68

عضویت از 1397/12/06

  • چهارشنبه 15 اسفند 1397
  • 22:57

خودم از روش اول استفاده کردم ولی طول تابع یکم زیاده و برای هر تغییر باید هردوتاش رو تغییر بدم

روش دوم رو بیشتر توضیح میدید

کاربر سایت

محمد اردوخانی

عضویت از 1396/05/17

  • پنجشنبه 16 اسفند 1397
  • 09:52

در روش دوم هم باید به ازای هر کدوم از Object هاتون کد رو بنویسین و تغییری در نوشتن کد ایجاد نمیکنه

صرفا فقط باعث میشه که در یک متد با گزاره شرطی if  عملیاتتون رو انجام بدین

اگر عملیات شما یکسان هستش برای این دو Object ، پس احتمالا property های مشابهی دارن و عملیات شما هم بر روی این property های مشابه هستش

میتونین این property های مشابه رو درون یک class بذارین و دو Object مورد نظرتون رو از این کلاس پایه ارث بری کنین

در نهایت برای این Object واسط یک متد بنویسین و عملیاتتون رو با یک متد انجام بدین

اما در کل همون روش اول رو پیشنهاد میکنم ( بنا به اصل Single Responsibility Principle )

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)