اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

کلیدواژه readonly

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

مثال:

در این مثال مقدار فیلد year نمی تواند در داخل متد ChangeYear تغییر کند، هرچند یک مقدار از داخل سازنده کلاس به آن انتساب داده شده است.

class Age
{
    readonly int _year;
    Age(int year)
    {
        _year = year;
    }
    void ChangeYear()
    {
        //_year = 1967; // Compile error if uncommented.
    }
}

شما فقط در شرایط زیر می توانید مقداری را به فیلد readonly انتساب دهید:

  • وقتی متغیر در هنگام اعلانش مقدار دهی اولیه شود، برای مثال:

public readonly int y = 5;

  • برای یک فیلد نمونه، در سازنده های نمونه ی کلاسی که حاوی اعلان فیلد است، یا برای فیلدی static، در سازنده static کلاسی که حاوی اعلان فیلد می باشد. همچنین تنها مکان های موجود که پاس دادن فیلد های readonly مجاز می باشد، به عنوان پارامتر out یا ref است.


نکته: کلمه کلیدی readonly با کلیدواژه const تفاوت دارد. فیلد const فقط در هنگام اعلان فیلد، مقدار دهی اولیه می شود. فیلد readonly هم در زمان اعلان و هم در سازنده قابلیت مقداردهی اولیه دارد. بنابراین فیلدهای readonly می توانند بسته به تابع سازنده استفاده شده مقادیر متفاوتی داشته باشد. همچنین، درحالیکه یک فیلد const، ثابت زمان-کامپایلی است، فیلد readonly می تواند به عنوان ثابت های زمان-اجرا استفاده شود. به صورت زیر:

public static readonly uint timeStamp = (uint)DateTime.Now.Ticks;

مثال:

public class ReadOnlyTest
{
   class SampleClass
   {
      public int x;
      // Initialize a readonly field
      public readonly int y = 25;
      public readonly int z;
      public SampleClass()
      {
         // Initialize a readonly instance field
         z = 24;
      }
      public SampleClass(int p1, int p2, int p3)
      {
         x = p1;
         y = p2;
         z = p3;
      }
   }
   static void Main()
   {
      SampleClass p1 = new SampleClass(11, 21, 32);   // OK
      Console.WriteLine("p1: x={0}, y={1}, z={2}", p1.x, p1.y, p1.z);
      SampleClass p2 = new SampleClass();
      p2.x = 55;   // OK
      Console.WriteLine("p2: x={0}, y={1}, z={2}", p2.x, p2.y, p2.z);
   }
}
    /*
     Output:
        p1: x=11, y=21, z=32
        p2: x=55, y=25, z=24
    */

در مثال بالا اگر شما از جمله ای مانند زیر استفاده کنید:

p2.y = 66; // Error

خطای کمپایل زیر را دریافت می کنید:

The left-hand side of an assignment must be an l-value

این خطا شبیه همان خطایی است که هنگام سعی برای انتساب مقدار به یک ثابت، دریافت می شود.

نظرات (۱)

  • غلامعلی حسینی بهجانی
  • این مطلب به دلیل درخواست دوستان، خارج از نوبت ترجمه شد.

    ارسال نظر

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