اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

۴ مطلب با کلمه‌ی کلیدی «آرگومان» ثبت شده است

  • ۱
  • ۰

کلمه کلیدی 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 که آرگومان هایش مجبور نیستند قبل از پاس داده شدن صریحا" مقداردهی اولیه شوند، متفاوت است.

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

کلمه کلیدی params

کلمه کلیدی params به شما امکان مشخص کردن یک پارامتر متد که تعداد متغیری آرگومان دریافت می کند را می دهد.

شما می توانید یک لیست از آرگومان ها از همان نوعی که در اعلان پارامتر مشخص شده را که با علامت وریگول از یکدیگر جدا شده اند (comma-separated) ، یا یک آرایه آرگومان ها از همان نوع مشخص شده را به متد ارسال کنید.

در اعلان متد بعد از کلیدواژه params ، هیچ پارامتر اضافه ای مجاز نیست، و فقط یک کلمه کلیدی params در اعلان متد مجاز است.

مثال

مثال زیر راه های مختلفی که می توان آرگومان ها را به یک پارامتر params ارسال کرد را توضیح می دهد.

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

اصلاحگر جنریک out

برای پارامترهای نوع جنریک، کلمه کلیدی out مشخص می کند که پارامتر نوع covariant است. شما می توانید از کلیدواژه out در رابط های جنریک و وکیل ها استفاده کنید.

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

رابطی که دارای پارامتر نوع covariant است، به متدهایش این امکان را می دهد که نوع هایی بیشتر مشتق شده نسبت به آنهایی که توسط پارامتر نوع مشخص شده، برگشت دهند. برای مثال، چون در دات نت فریم وورک 4، در <IEnumerable<T ، نوع T کواریانت است، شما می توانید شیئی از نوع (IEnumerable(of String را به شیئی از نوع (IEnumerable(of Object انتساب دهید، بدون اینکه به هیچ متد تبدیل خاصی نیاز داشته باشید.

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

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

اصلاحگر پارامتر 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 یا پایان متد) یک مقدار به آنها انتساب دهد.

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