اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

آخرین نظرات
  • ۱۳ بهمن ۰۱، ۱۵:۳۱ - حسنا سادات و سما سادات
    عالی

۳ مطلب با کلمه‌ی کلیدی «ref» ثبت شده است

  • ۱
  • ۰

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

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

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

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

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

کلمه کلیدی ref

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

نکته

مفهوم پاس دادن با مرجع را با مفهوم نوع های مرجع اشتباه نگیرید. این دو مفهوم با هم ارتباطی ندارند؛ یک پارامتر متد فارغ از اینکه نوع مقداری باشد یا نوع مرجع می تواند با ref اصلاح شود. بنابراین وقتی یک نوع مقداری بصورت ارجاعی به متد پاس داده می شود هیچ عمل boxing انجام نمی گیرد.


برای استفاده از یک پارامتر ref ، هم در اعلان متد و هم در فراخوانی متد باید از کلیدواژه ref استفاده کرد. برای مثال:

class RefExample
{
    static void Method(ref int i)
    {
        i = 44;
    }
    static void Main()
    {
        int val = 0;
        Method(ref val);
        // val is now 44
    }
}

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

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

اصلاحگر پارامتر out

کلمه کلیدی out باعث می شود که آرگومان ها بصورت مرجع ، پاس داده شوند. این کلیدواژه شبیه کلمه کلیدی ref است ، بجز اینکه ref نیاز دارد که متغیر قبل پاس دادن، مقدار دهی اولیه شده باشد. برای استفاده از یک پارامتر out، تعریف متد و فراخوانی متد ، هر باید از کلمه کلیدی out صریحا" استفاده کنند. برای مثال:

class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
    static void Main()
    {
        int value;
        Method(out value);
        // value is now 44
    }
}

هرچند متغیرهایی که بصورت آرگومان out پاس داده شده اند مجبور نیستند که قبل از پاس داده شدن مقداردهی اولیه شوند، ولی متد فراخوانی شده، لازم است که قبل از اینکه متد برگردد (با دستور return یا پایان متد) یک مقدار به آنها انتساب دهد.

  • غلامعلی حسینی بهجانی