اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾflỵ ⓔⓕⓕⓔⓒⓣ

مشخصات بلاگ
اثر پروانه ای

اثر پروانه‌ای نام پدیده‌ای است که به دلیل حساسیت سیستم‌های آشوب‌ناک به شرایط اولیه ایجاد می‌شود. این پدیده به این اشاره می‌کند که تغییری کوچک در یک سیستم آشوب‌ناک چون جو سیارهٔ زمین (مثلاً بال‌زدن پروانه) می‌تواند باعث تغییرات شدید (وقوع توفان در کشوری دیگر) در آینده شود.

ایده‌ٔ این‌که پروانه‌ای می‌تواند باعث تغییری آشوبی شود نخستین بار در ۱۹۵۲ در داستان کوتاهی به نام آوای تندر اثر ری بردبری مطرح شد. عبارت «اثر پروانه ای» هم در ۱۹۶۱ در پی مقاله‌ای از ادوارد لورنتس به وجود آمد. وی در صد و سی و نهمین اجلاس ای‌ای‌ای‌اس در سال ۱۹۷۲ مقاله‌ای با این عنوان ارائه داد که «آیا بال‌زدن پروانه‌ای در برزیل می‌تواند باعث ایجاد تندباد در تکزاس شود؟»

آخرین نظرات
  • ۱۱ بهمن ۹۵، ۱۷:۱۸ - فاروق کریمی زاده
    خوب بود.
اثر پروانه ای

همه چیز در مورد delegate - بخش 5

دوشنبه, ۲۹ مهر ۱۳۹۲، ۱۰:۱۵ ق.ظ

احضار delegate هایی که دارای مقدار برگشتی هستند

اگر یک وکیل دارای مقدار بازگشتی باشد و در لیست احضارش بیش از یک متد موجود باشد، موارد زیر رخ خواهد داد:

  • مقداری که از آخرین متد موجود در لیست احضار برگشت داده می‌شود همان مقدار برگشتی وکیل است.
  • مقدار برگشتی همه متدهای دیگر نادیده گرفته می‌شود.

برای مثال کد زیر یک delegate اعلان می‌کند که دارای مقدار برگشتی از نوع int است. تابع Main یک شیئ از آن delegate ساخته، سپس 2 متد به آن اضافه می‌کند، بعد از آن delegate را در بیان WriteLine فراخوانی کرده و مقدار برگشتی آن را چاپ می‌کند. شکل زیر یک ارائه گرافیکی از کد را نشان می‌دهد.

delegate int MyDel( ); // Declare delegate with return value.
class MyClass {
int IntValue = 5;
public int Add2() { IntValue += 2; return IntValue;}
public int Add3() { IntValue += 3; return IntValue;}
}
class Program
{
    static void Main()
    {
        MyClass mc = new MyClass();
        MyDel mDel = mc.Add2; // Create and initialize the delegate.
        mDel += mc.Add3; // Add a method.
        mDel += mc.Add2; // Add a method.
        Console.WriteLine("Value: {0}", mDel());
    }
}

این کد خروجی زیر را تولید می‌کند:

Value: 12

احضار delegate های دارای پارامتر مرجع

اگر یک delegate دارای یک پارامتر مرجع باشد، مقدار پارامتر به محض انتهای کار (return شدن) یک متد (یا بیش از یک متد) در لیست احضار، می تواند تغییر کند.

*در هنگام فراخوانی متد بعدی در لیست احضار، مقدار جدید پارامتر -نه مقدار اولیه- به متد بعدی پاس داده می شود.

برای مثال، کد زیر یک delegate با پارامتر مرجع را احضار می‌کند. شکل زیر کد را شرح می دهد.

delegate void MyDel(ref int X);
class MyClass
{
    public void Add2(ref int x) { x += 2; }
    public void Add3(ref int x) { x += 3; }
    static void Main()
    {
        MyClass mc = new MyClass();
        MyDel mDel = mc.Add2;
        mDel += mc.Add3;
        mDel += mc.Add2;
        int x = 5;
        mDel(ref x);
        Console.WriteLine("Value: {0}", x);
    }
}

این کد خروجی زیر را تولید می کند:

Value: 12

نظرات  (۰)

هنوز هیچ نظری ثبت نشده است

ارسال نظر

لطفا اگر می خواهید در بخش نظرات، کد برنامه مورد نظر خود را بنویسید، قسمت زیر (Program Code) را کپی کرده، و در کادر "پیام" ، paste کنید. سپس برنامه مورد نظر خود را در کادری که ایجاد می شود، وارد کنید.

  • کلید میانبر برای Copy کردن: Ctrl+C

  • کلید میانبر برای paste کردن: Ctrl+V

//Program Code

از همکاری شما کمال تشکر را دارم.

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی