دانلود نرم افزار - آموزش سی شارپ
دانلود نرم افزار - آموزش سی شارپ

دانلود نرم افزار - آموزش سی شارپ

delegate دلیگیت

delegate

همان طور  که می دانید یک متد می تواند چندین پارامتر با نوع های مختلف را یکجا دریافت نماید.مانند عدد صحیح ، اعشاری و یا رشته اما تا کنون به این فکر کرده اید که آیا می شود یک متد را بعنوان پارامتری به متد دیگر تحویل داد .

اگر قصد چنین کاری را دارید ، متدی را که می خواهید بعنوان پارامتر باشد بایستی بصورت  delegate  تعریف کنید .  

برنامه زیر نمونه ای از کاربرد دلیگیت می باشد .

using System;
namespace deligayt
{
    class Program
    {
        public delegate void Print(int value);
        static void Main(string[] args)
        {
            // Print delegate points to PrintNumber
            Print printDel = PrintNumber;
            printDel(100000);
            printDel(200);
            // Print delegate points to PrintMoney
            printDel = PrintMoney;
            printDel(10000);
            printDel(200);
            Console.ReadLine();
        }
        public static void PrintNumber(int num)
        {
            Console.WriteLine("Number: {0,-12:N0}", num);
        }
        public static void PrintMoney(int money)
        {
            Console.WriteLine("Money: {0:C}", money);
         }         }            }

یک نمونه برنامه دیگر از نحوه استفاده از دلیگیت :


using System;
delegate int NumberChanger(int n);
namespace DelegateAppl {
   class TestDelegate {
      static int num = 10;
            public static int AddNum(int p) {
         num += p;
         return num;
      }
      public static int MultNum(int q) {
         num *= q;
         return num;
      }
      public static int getNum() {
         return num;
      }
      static void Main(string[] args) {
         //create delegate instances
         NumberChanger nc1 = new NumberChanger(AddNum);
         NumberChanger nc2 = new NumberChanger(MultNum);
         //calling the methods using the delegate objects
         nc1(25);
         Console.WriteLine("Value of Num: {0}", getNum());
         nc2(5);
         Console.WriteLine("Value of Num: {0}", getNum());
         Console.ReadKey();               }              }        }

خروجی برنامه بالا بصورت زیر می باشد . - - - - -


Value of Num: 35
Value of Num: 175

dynamic نوع داده داینامیک

dynamic

داینامیک متغیری است که نوع آن در زمان اجرا مشخص و تعیین می گردد نه در زمان کمپایل شدن . یعنی ما می توانیم هر نوع داده را درون آن جای دهیم.

این نوع متغیر با کلمه رزرو شده   dynamic  تعریف می شود.

dynamic Varname = 1;

کمپایلر معمولا این نوع متغیر را هنگام کمپایل به نوع   object  تبدیل می کند .

Interface اینترفیس

Interface

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

نکته : اینترفیس نمی تواند دارای اعضاء Private باشد بلکه بصورت پیش فرض بصورت  Public  می باشند.

یک اینترفیس با کمک کلمه رزرو شده   interface  تعریف می شود .


using System;
namespace InterfaceApplication {
    public interface ITransactions {
      // interface members
      void showTransaction();
      double getAmount();
   }
      public class Transaction : ITransactions {
      private string tCode;
      private string date;
      private double amount;
      public Transaction() {
         tCode = " ";
         date = " ";
         amount = 0.0;
      }
      public Transaction(string c, string d, double a) {
         tCode = c;
         date = d;
         amount = a;
      }
      public double getAmount() {
         return amount;
      }
      public void showTransaction() {
         Console.WriteLine("Transaction: {0}", tCode);
         Console.WriteLine("Date: {0}", date);
         Console.WriteLine("Amount: {0}", getAmount());
      }
   }
   class Tester {
      static void Main(string[] args) {
         Transaction t1 = new Transaction("001", "8/10/2012", 78900.00);
         Transaction t2 = new Transaction("002", "9/10/2012", 451900.00);
         t1.showTransaction();
         t2.showTransaction();
         Console.ReadKey();
      }            }           }

خروجی برنامه بصورت زیر می باشد


Transaction: 001
Date: 8/10/2012
Amount: 78900
Transaction: 002
Date: 9/10/2012
Amount: 451900

کلاس - Class

کلاس : Class

 کلاس مفهومی شبیه نقشه یک ساختمان دارد که خود به تنهایی مثلا قابل سکونت نیست بلکه بایستی یک نمونه ( ساختمان ) از روی آن ساخت و از آن نمونه ساخته شده استفاده کرد.یعنی در واقع کلاس یک  Concept  از شیء ایست که می خواهیم داشته باشیم .

یک کلاس  دارای اعضائی است که این اعضاء به دو دسته تقسیم می شوند 1 . داده ها و 2 . عملکردها .

داده ها شامل فیلدها ( Fields) و خصوصیات ( properties ) و عملکردها نیز شامل رویدادها ( Events ) و متدها ( methods ) می باشند.

کلاس { فیلدها و خصوصیات - رویدادها و عملکردها }

یک کلاس با استفاده از کلید واژه class و به دنبال آن نامی برای کلاس و دو علامت { } تعریف می شود .

در مثال زیر کلاسی به نام MyClass  تعریف شده که هیچ عضوی ندارد و در واقع هیچ کاری هم انجام نمی دهد.

class MyClass
{
    
}

همانطور که در بالا بیان شد کلاس دارای اعضایی است . قبل از اضافه کردن اعضاء درون کلاس به این نکته توجه داشته باشید که هر کلاس برای اجرا شدن حتماً به یک سازنده ( constructor) احتیاج دارد وگرنه کلاس ما بدون انجام هیچ واکنشی بدون استفاده باقی می ماند. یک سازنده بوسیله تعیین یک سطح دسترسی و نامی دقیقا مشابه نام کلاس و علامت () تعریف می گردد که می تواند دارای پارامتر و یا بدون پارامتر باشد.( در مثال زیر سازنده کلاس MyClass هیچ پارامتری دریافت نمی کند. ضمنا این Constructor بطور اتومتیک اجرا می شود )

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

class MyClass
{
   public MyClass()
    {

    }
}

دقت کنید : همانطور که در بالا بیان شد برای دسترسی به اعضاء یک کلاس و استفاده از عملکردهای آن می بایست ابتدا یک نمونه یا شیء( Object ) از آن کلاس را ساخت و سپس به کمک آن شیء به اعضاء کلاس دسترسی پیدا کرد.

using System;
namespace ClassTest
{
    class Program
    {
        class MyClass
        {
            int nonStaticVariable;
            static int staticVariable;
            public void SetVars(int v1, int v2)
            {
                nonStaticVariable = v1;
                staticVariable = v2;
            }
            public void Display()
            {
              Console.WriteLine("nonStaticVariable = {0}  staticVariable = {1}", nonStaticVariable, staticVariable);
              Console.ReadKey();
            }
        }
            static void Main()
            {
                MyClass d1 = new MyClass();
                MyClass d2 = new MyClass();
                d1.SetVars(2, 4);
                d1.Display();
                d2.SetVars(15, 17);
                d2.Display();                 }       }       }

همانطور که می بینید در اینجا دو نمونه از کلاس به نام های d1  و  d2 ساخته شده که به آنها مقدارهای متفاوتی داده شده .

که پس از اجرا ابتدا شیء d1  و سپس با زدن اینتر شیء  d2  اجرا می شوند. خروجی برنامه بصورت زیر می باشد.

nonStaticVariable = 2          staticVariable = 4

nonStaticVariable = 15          staticVariable = 17