درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من

    تا 75 درصد تخفیف ویژه شب یلدا بر روی کلیه محصولات وب سایت توسینسو فقط تا 30 آذر

    مانده تا پایان تخفیف ها

    تخفیف های وب سایت
    همه تخفیف ها

    عضویت در

    کانال تلگرام

    توسینسو

    اطلاعات مطلب
      مدرس/نویسنده
      حسین احمدی
      امتیاز: 212242
      رتبه:3
      342
      253
      403
      2719
      حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ... پروفایل کاربر
      دوره های مرتبط
      دوره های توسینسو دوره متوسطه برنامه نویسی به زبان جاوا به زبان ساده
      دوره متوسطه برنامه نویسی به زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 18 قسط خریداری کنید
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      مدرس: کاظم تقندیکی
      این دوره را در 20 قسط خریداری کنید
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      مدرس: ایمان جوادی
      این دوره را در 13 قسط خریداری کنید
      دوره آموزشی برنامه نویسی مقدماتی پایتون به زبان ساده
      دوره آموزشی برنامه نویسی مقدماتی پایتون به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 23 قسط خریداری کنید
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 78 قسط خریداری کنید
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 27 قسط خریداری کنید
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      مدرس: کاظم تقندیکی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 17 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 17 قسط خریداری کنید
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      مدرس: مهدی عادلی فر
      این دوره را در 2 قسط خریداری کنید
      دوره آموزشی ساخت ربات تلگرام
      دوره آموزشی ساخت ربات تلگرام
      مدرس: کاظم تقندیکی
      این دوره را در 8 قسط خریداری کنید
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی Exploit نویسی به زبان Perl
      دوره آموزشی Exploit نویسی به زبان Perl
      مدرس: ایمان جوادی
      این دوره را در 7 قسط خریداری کنید
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      مدرس: امیر حسین فضلیخانی
      این دوره را در 12 قسط خریداری کنید
      دوره آموزشی طراحی رابط کاربری با JavaFX
      دوره آموزشی طراحی رابط کاربری با JavaFX
      مدرس: حسام رسولیان
      این دوره را در 13 قسط خریداری کنید

      آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش اول)

      تاریخ 44 ماه قبل
      نظرات 3
      بازدیدها 8116
      با سلام مجدد به دوستان عزیزم در انجمن تخصصی فناوری اطلاعات ایران. در ادامه مباحث آموزشی زبان سی شارپ به مبحث متدها و شیوه استفاده از آنها خواهیم پرداخت. اما متدها چه استفاده ای در زبان سی شارپ دارند؟ زمانی که ما برنامه ای را می نویسیم با زیاد شدن حجم کد نوشته شده، میزان خوانایی و درک از کد نوشته شده کاهش میابد. فرض کنید برنامه ای در کنسول نوشتیم که تعداد خطوط کد بالای 5000 خط بوده و کل کدهای آن را در متد Main که در بخش های ابتدایی این سری آموشی با آن آشنا شدیم نوشته ایم. پس از مدتی، قصد داریم قسمتی از کد را تغییر دهیم یا امکان جدیدی به برنامه اضافه کنیم. صد در صد کار نگهداری و خطایابی برنامه ای که نوشته ایم مشکل خواهد بود. زیرا تمامی کدها در یکجا نوشته شده و برنامه نویس برای پیدا کردن و مدیریت کدها به مشکل بر خواهد خورد. برای حل این مشکل باید کدها را از لحاظ کاربردی به قسمت های مختلف تقسیم کنیم. این تقسیم بندی با کمک متدها انجام می شوند. در حقیقت متدها قطعه کدهایی هستند که هر یک، وظیفه ای مشخص را در برنامه ما انجام می دهند. در این قسمت هدف آشنایی با کاربرد متدها می باشد که با مباحث زیر آشنا خواهیم شد:

      1. شیوه تعریف متدها
      2. پارامترها و مقادیر بازگشتی
      3. آشنایی با عبارات ref و out
      4. آشنایی با مفهوم method overloading
      5. نوشتن توابع بازگشتی (Recursive Functions)


      شیوه تعریف متدها


      در قسمت های قبلی، با متد Main که نقطه شروع برنامه های سی شارپ می باشد آشنا شدیم. در زبان سی شارپ ما می توانیم متدهای مورد نظر خودمان را ایجاد کنیم. زمان تعریف متدها به این نکته باید توجه داشت که هر متد باید یک وظیفه خاص را انجام دهد. در قسمت زیر با شیوه نوشتن متدها آشنا می شویم:

      {modifier} [static] {return-type} {name}({parameters})
      {
          // method body
      }
      

      1. {modifier}: این بخش نمایانگر سطح دسترسی به متد می باشد. زمانی که ما کدی می نویسیم باید سطح دسترسی به آن قطعه کد را مشخص کنیم. برای مثال متد Main سطح دسترسی public دارد، یعنی از هر نقطه ای از برنامه می توان به آن دسترسی داشت. سطوح دسترسی به شیوه های مختلف تعریف می شوند که در قسمت های بعدی با آنها آشنا می شویم. در حال حاضر برای تمام متدها از کلمه کلیدی public یا عمومی استفاده می کنیم.
      2. [static]: در زبان سی شارپ، ما مفهومی داریم به نام کلاس ها که اشیاء از روی آنها ساخته می شوند، زمانی که ما متدی را با کلمه static مشخص می کنیم، می گوییم این متد خارج از نمونه های ساخته شده از آن کلاس قابل استفاده باشند. نوشتن کلمه کلیدی static برای متدها اختیاری می باشد. توجه داشته باشید. در حال حاضر ما تمامی متدهایی که می نویسیم زیر متد Main تعریف می شوند و باید از نوع static باشند، زیرا تنها متدهای static را می توان از داخل متد Main صدا زد.
      3. {return-type}: در این قسمت ما باید نوع بازگشتی متد را مشخص کنیم. متدها می توانند نوع بازگشتی داشته باشند یا نداشته باشند. برای مثال زمانی که ما متدی می نویسیم که نوع بازگشتی آن string است، جای {return-type} کلمه کلیدی string را می نویسیم. اگر متد نوع بازگشتی نداشته باشد از کلمه void برای مقدار بازگشتی استفاده می کنیم. مقدار مورد نظر داخل بدنه متد با کلمه کلیدی return برگردانده می شود. متدهایی که نوع بازگشتی دارند، باید داخل بدنه مقداری را برگردانند.
      4. {name}: در این قسمت نام متد را مشخص می کنیم، نام متد هر نامی می تواند باشد، اما قواعد نامگذاری متغیرها در قسمت متدها نیز صدق می کنند.
      5. {parameters}: در این قسمت ما پارامترهای ورودی متدها را مشخص می کنیم. یک متد می تواند شامل یک یا چندین پارامتر ورودی باشد یا اصلاً ورودی نداشته باشد.
      6. بدنه متد، مجموعه کدهایی است که با صدا زدن نام آن متد می خواهیم اجرا شوند، این کدها باید بین علامت های { و } قرار گیرند.

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

      private static void Main(string[] args)
      {
          DisplayMessage();
      }
      
      public static void DisplayMessage()
      {
          Console.WriteLine("Welcome to C# Course...");
      }
      

      در نمونه کد بالا، متدی با نام DisplayMessage تعریف کردیم که داخل آن پیغامی بر روی صفحه کنسول نمایش داده می شود. در داخل متد Main هم متد DisplayMessage را فراخوانی کردیم. دقت کنید که برای فراخوانی متد باید پس از نام متد حتماً () را قرا دهیم. در این متد به دلیل اینکه ما پارامتری برای متد تعریف نکردیم داخل پرانتز هیچ چیز نمی نویسیم، اما اگر پارامتری تعریف شده بود، داخل پرانتز باید مقادیر هر پارامتر را مشخص می کردیم که در قسمت بعدی شیوه تعریف پارامترها را با هم بررسی می کنیم.


      نحوه استفاده پارامتر ها در متدها


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

      private static void Main(string[] args)
      {
          DisplayMessage("Hossein","Ahmadi");
      }
      
      public static void DisplayMessage(string firstName, string lastName)
      {
          Console.WriteLine("Welcome dear " + firstName + " " + lastName);
      }
      

      در نمونه کد بالا، متدی تعریف کردیم با نام DisplayMessage که دو پارامتر از نوع string با نام های firstName و lastName به عنوان ورودی دریافت می کند. سپس داخل بدنه متد، پیغامی حاوی نام و نام خانوداگی که به عنوان پارامتر پاس داده شده است را در خروجی نمایش می دهیم.

      برای فراخوانی متد، در متد Main داخل پرانتز پس از نام متد باید لیست مقادیر مورد نظر برای هر پارامتر را بنویسیم. دقت کنید که ترتیب نوشتن مقادیر برای پارامترها با لیست تعریف پارامترها باید یکسان باشد. همچنین باید تعداد مقادیر ورودی هنگام فراخوانی متد با تعداد پارامترهای مشخص شده برای آن یکسان باشد. در غیر اینصورت با پیغام خطا مواجه خواهید شد. البته راهیی وجود دارد که از نوشتن مقادیر برای برخی پارامترها خودداری کرد و آن استفاده از مقادیر پیش فرض برای پارامترها می باشد.

      مقادیر پیش فرض برای پارامترها


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


      private static void Main(string[] args)
      {
          DisplayMessage("Hossein");
      }
      
      public static void DisplayMessage(string firstName, string lastName = "Ahmadi")
      {
          Console.WriteLine("Welcome dear " + firstName + " " + lastName);
      }
      

      در مثال بالا، هنگام تعریف متد DisplayMessage برای پارامتر lastName مقدار پیش فرض Ahmadi را مشخص کردیم. با این کار می توانیم از نوشتن مقدار پارامتر lastName هنگام فراخوانی متد خودداری کنیم. در حقیقت نوشتن مقدار برای این پارامتر دلخواه بوده و در صورت نوشته نشدن مقدار پیش فرض جایگزین خواهد شد. دقت کنید که زمان مشخص کردن مقادیر پیش فرض، تنها انتهایی ترین پارامترها می توانند مقدار پیش فرض داشته باشند، در غیر اینصورت پیغام خطا دریافت خواهد کرد. به عنوان مثال:

      public static void Test(int a, int b = 12, int c)
      {
      }
      

      کد بالا صحیح نمی باشد، زیرا علاوه بر پارامتر b باید پارامتر c نیز مقدار اولیه داشته باشد تا پیغام خطا دریافت نکنیم.

      مقدار دهی پارامتر ها با استفاده از نام


      هنگامی که متدی با چندین پارامتر تعریف میکنیم، می توان مقدار دهی پارامترها را بر اساس نام پارامتر انجام داد. متد زیر را در نظر بگیرید:

      public static void Test(int a, int b, int c, int d)
      {
      }
      

      برای مقدار دهی پارامترها بر اساس نام هنگام فراخوانی به روش زیر عمل می کنیم:

      Test(b: 12, d: 1, a: 18, c: 9);
      

      همانطور که ملاحظه می کنید، زمانی که از نام پارامتر برای مقدار دهی آن استفاده می کنید، ترتیب نوشتن دیگر مهم نیست.


      مقادیر بازگشتی از متدها


      یکی از موارد استفاده از متدها، گرفتن خروجی از یک متد است. یعنی متد بعد از انجام یکسری کارها یک خروجی برای ما بر میگرداند. برای استفاده از مقادیر خروجی، باید ابتدا نوع خروجی متد را هنگام تعریف آن مشخص کرد. تا این لحظه متدهایی که نوشتیم مقادیر بازگشتی آنها از نوع void بود، یعنی مقدار بازگشتی نداشتند. اما فرض کنید می خواهیم متدی بنویسیم که دو عدد را به عنوان ورودی دریافت کرده و به عنوان خروجی حاصل جمع آنها را برگرداند. برای اینکار نیاز به یک مقدار خروجی داریم. به مثال زیر توجه کنید:

      public static int Sum(int n1, int n2)
      {
          var result = n1 + n2;
          return result;
      }
      

      به تعریف بالا دقت کنید، به جای کلمه void از نوع int استفاده کردیم که نشان دهنده نوع بازگشتی متد ما می باشد. اما نکته دیگری نیز وجود دارد که باید به آن توجه کنیم. زمانی که متد ما مقدار بازگشتی دارد، باید جایی داخل بدنه متد، مقداری را با کلمه کلید return بازگردانیم. این مقدار به عنوان خروجی متد در نظر گرفته خواهد شد. در صورتی که متد ما مقدار بازگشتی داشته و جایی از return استفاده نکنیم با پیغام خطا مواجه خواهیم شد. برای فراخوانی متد Sum و استفاده از نتیجه بازگشتی آن به صورت زیر عمل می کنیم:

      Console.WriteLine(Sum(2,4));
      

      کد بالا، در خروجی مقدار 6 که حاصل جمع 4 و 2 می باشد را چاپ خواهد کرد.

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

      public static decimal CalculateTax(decimal salary, byte tax)
      {
          return (salary / 100) * tax;
      }
      

      و سپس می توانیم به صورت زیر کد بالا را فراخوانی کنیم:

      Console.WriteLine(CalculateTax(2500000, 5));
      

      تا این جای کار با مقدمات تعریف متدها، پارامترها و مقادیر بازگشتی متدها آشنا شدیم. در بخش دوم از قسمت دهم سری آموزشی سی شارپ با کلمات کلیدی out و ref، مفهوم method overloading و توابع بازگشتی آشنا خواهیم شدیم. ITPRO باشید

      نویسنده : حسین احمدی
      منبع : جزیره برنامه نویسی وب سایت توسینسو
      هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
      برچسب ها
      ردیفعنوان
      1دوره آموزشی .NET Framework و زبان برنامه نویسی سی شارپ - مقدمه
      2آموزش سی شارپ - قسمت اول :: معرفی و بررسی ابزارهای مورد نیاز دوره
      3آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش اول)
      4آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش دوم)
      5آموزش زبان سی شارپ - قسمت سوم :: آشنایی اولیه با محیط Visual Studio و نوشتن اولین برنامه
      6آموزش زبان سی شارپ - قسمت چهارم :: آشنایی با ساختار برنامه ها و کامپایلر زبان سی شارپ
      7آموزش زبان سی شارپ - قسمت پنجم :: آشنایی با دستورات کنسول و متغیرها
      8آموزش زبان سی شارپ - قسمت ششم :: نوع های داده اولیه
      9آموزش زبان سی شارپ - قسمت هفتم :: آشنایی با عملگرهای زبان سی شارپ
      10آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش اول)
      11آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش دوم)
      12آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش سوم)
      13آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش چهارم)
      14آموزش زبان سی شارپ - قسمت نهم :: آشنایی با آرایه ها و دستور foreach
      15آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش اول)
      16آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش دوم)
      17آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت یازدهم :: مقدمه ای بر برنامه نویسی شئ گرا
      18آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت دوازدهم :: آشنایی با کلاس، اشیاء و فضاهای نام
      19آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت سیزدهم :: آشنایی با فیلدها و رفتارها
      20آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت چهاردهم :: آشنایی با Property ها
      21آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت پانزدهم :: آشنایی با سازنده ها و روش های ایجاد اشیاء
      22آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت شانزدهم :: وراثت یا Inheritance
      23آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هفدهم :: آشنایی با مفهوم Polymorphism
      24آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هجدهم:: کلاس های abstract و sealed
      25آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت نوزدهم :: سازنده ها در وراثت، کلمه کلیدی protected و فیلدهای readonly
      26آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیستم :: کلاس های static و partial و Extension Method ها
      27آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و یکم :: Reference Types و Value Types
      28آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و دوم :: آشنایی با کاربرد interface ها
      29آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و سوم :: آشنایی با مفاهیم Inversion of Control و Dependency Injection
      30آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و چهارم :: آشنایی با مفهوم Type Casting و انواع Cast ها
      31آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و پنجم :: آشنایی با operator overloading و تعریف cast ها
      32آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و ششم :: مفاهیم boxing و unboxing
      33آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هفتم :: قابلیت Generics
      34آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هشتم :: نکات تکمیلی Generic ها، کلاس List و کلاس Dictionary
      35آموزش زبان سی شارپ -قسمت بیست و نهم (پایانی): استثناء ها (Exceptions) و مدیریت خطاها در سی شارپ
      دورهمجموعه کل دوره
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      • آقا دمت گرم چقدر برای دانشگاهم دنبال این متد ها گشتم بلخره پیداش کردم خیلی ممنونم فقط یه مشکلی هست من مثالی از این متد ها نمیبینم یعنی مثالی ک جنبه امتحانی داشته باشه میخواستم ببینم از کجا میتونم پیدا کنم ؟
      • منظورتون از مثال امتحانی چی هست؟ اگر چیزی مد نظرتون هست در قالب یک سوال ارسال کنید بنده در خدمتتون هستم.
      • این پست حذف شده است
        دلیل حذف:

      • سلام و عرض ادب، ممنون از شما. دوره آموزشی فرم ها به صورت ویدیویی داخل سایت هست و آموزش متنی راجع به Windows Forms نداریم.

      برای ارسال نظر ابتدا به سایت وارد شوید