اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

۸۰ مطلب با کلمه‌ی کلیدی «keyword» ثبت شده است

  • ۱
  • ۰

نوع داده ای uint

کلمه کلیدی uint نشاندهنده یک نوع صحیح است که مقادیر را طبق شرایط زیر ذخیره می کند.

  • نوع: uint
  • محدوده: 0 تا 4,294,967,295
  • اندازه: صحیح علامت دار 32-بیتی
  • نوع دات نتی: System.UInt32

نکته

نوع uint با مشخصات زبان مشترک (CLS) سازگار نیست. تاجایی که امکان دارد از نوع int استفاده کنید. (یعنی ممکن است برنامه شما درصورت استفاده از نوع uint در پلتفرم های دیگری که از CLS پشتیبانی می کنند با مشکل مواجه شود)

لیترال ها

شما می توانید متغیرهای uint را بصورت زیر اعلان و مقداردهی اولیه کنید.

uint myUint = 4294967290;

وقتی یک لیترال عددی صحیح دارای هیچ پسوندی نباشد، نوع آن یکی از نوع هایی است که مقدار آن لیترال توانایی قرار گرفتن در آن را داشته باشد: int ، uint ، long ، ulong در این مثال، این نوع uint است:

uint uInt1 = 123;

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

کلیدواژه typeof

برای بدست آوردن شیئ System.Type مربوط به یک نوع کاربرد دارد. یک عبارت typeof به شکل زیر است:

System.Type type = typeof(int);

ملاحظات

برای بدست آوردن نوع زمان-اجرای یک عبارت ، می توانید از متد دات نتی GetType بصورت زیر استفاده کنید:

int i = 0;
System.Type type = i.GetType();

عملگر typeof را نمی توان overload کرد.

عملگر typeof همچنین می تواند در نوع های جنریک باز مورد استفاده قرار گیرد. نوع هایی که دارای بیش از یک پارامتر نوع هستند، باید تعداد متناسبی وریگول (کاما) در خصوصیتشان باشند. مثال زیر چگونگی تعیین اینکه آیا نوع خروجی یک متد از نوع جنریک IEnumerable است یا نه را نشان می دهد. فرض کنید این متد نمونه ای از یک نوع MethodInfo باشد:

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

کلمه کلیدی this

کلمه کلیدی this به نمونه فعلی کلاس رجوع می کند و همچنین به عنوان اصلاحگر اولین پارامتر یک متد الحاقی (Extension Method) کاربرد دارد.

نکته

این تاپیک فقط کاربرد کلیدواژه this با نمونه های کلاس را توضیح می دهد. در مورد متدهای الحاقی بطور خلاصه باید بگویم که : متدهای الحاقی به شما این امکان را می دهند که متد ها را به نوع های موجود "اضافه" کنیم ، بدون اینکه یک نسخه مشتق شده جدید از آن نوع بسازیم ، بدون نیاز به کامپایل مجدد و یا حتی ویرایش نوع اصلی. متدهای الحاقی ، نوع خاصی از متدهای ایستا هستند، اما بگونه ای فراخوانی می شوند که انگار متد نمونه آن نوع الحاقی می باشند. برای کد نوشته شده در #C هیچ تفاوت آشکاری بین فراخوانی یک متد الحاقی و متدهایی که واقعا" در داخل نوع اعلان شده اند وجود ندارد. مشهورترین متدهای الحاقی ، عملگرهای پرس و جوی استاندارد LINQ می باشند که قابلیت های پرس و جو را به نوع های IEnumerable و <IEnumerable<T موجود اضافه می کنند. برای استفاده از عملگرهای پرس و جوی استاندارد، اول آنها را با استفاده از رهنمون using System.Linq به داخل حوزه (scope) بیاورید. از جمله متدهای الحاقی LINQ می توان به GroupBy ، OrderBy و Average اشاره کرد که پس اضافه کردن رهنمون فوق الذکر به نوع شمارشی IEnumerable اضافه می شوند.


موارد زیر کاربردهای معمول کلمه کلیدی this است:

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

کلیدواژه throw

بیان throw برای ابلاغ اتفاق یک موقعیت غیرعادی (exception) در حین اجرای برنامه ، استفاده می شود.

ملاحظات

خطای پرتاب شده ، شیئی است که از کلاس System.Exception مشتق شده است. برای مثال:

class MyException : System.Exception {}
// ...
throw new MyException();

معمولا" بیان throw به همراه بیان های try-catch یا try-finally مورد استفاده قرار می گیرد.

public class ThrowTest2
{
    static int GetNumber(int index)
    {
       int[] nums = { 300, 600, 900 };
       if (index > nums.Length)
       {
           throw new IndexOutOfRangeException();
       }
       return nums[index];

    }
    static void Main() 
    {
       int result = GetNumber(3);
    }
}
    /*
        Output:
        The System.IndexOutOfRangeException exception occurs.
    */
  • غلامعلی حسینی بهجانی
  • ۱
  • ۱

کلمه کلیدی struct

نوع struct یک نوع مقداری است که بطور معمول برای کپسوله کردن گروهای کوچک از متغیرهای وابسته به هم مورد استفاده قرار می گیرد. برای مثال مختصات یک مستطیل یا مشخصات یک فقره کالا از صورت حساب. مثال زیر یک اعلان ساده struct را نشان می دهد:

public struct Book
{
    public decimal price;
    public string title;
    public string author;
}

ملاحظات

ساختارها (struct) همچنین می توانند حاوی سازنده ها، ثابت ها، فیلدها، متدها، پراپرتی ها، شاخصگرها، عملگرها، رویدادها و نوع های تودرتو باشند، هرچند اگر به چندین عضو از چنین اعضایی نیاز باشد، شما می بایست بجای ساختن struct به ساختن کلاس فکر کنید.

ساختارها می توانند یک رابط را پیاده سازی کنند ولی نمی توانند از ساختارهای دیگر ارث بری کنند. به همین علت اعضای ساختار را نمی توان بصورت protected اعلان کرد.

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

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

با اینکه string یک نوع مرجع است، عملگرهای تساوی (== و =!) برای مقایسه مقادیر اشیاء رشته ای (string) تعریف شده اند نه ارجاع ها. این کار آزمایش برابری رشته ها را قابل فهم تر می کند. برای مثال:

string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);

مثال قبل True را نمایش داده سپس False به نمایش در می آید، زیرا محتویات رشته ها با هم برابرند، اما a و b به نمونه رشته یکسانی اشاره نمی کنند.

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

اصلاحگر static

از اصلاحگر static برای اعلان یک عضو ایستا استفاده کنید. اعضای ایستا (static) بجای اینکه به شئی خاصی متعلق باشند ، به خود نوع وابستگی دارند. اصلاحگر static را می توان با کلاس ها ، فیلدها ، متدها ، پراپرتی ها ، عملگرها ، رویداد ها و سازنده ها استفاده کرد ، اما نمی توان از آنها برای شاخصگرها (indexer) ، مخرب ها یا نوع هایی دیگر بجز کلاس ها استفاده کرد.

مثال

کلاس زیر بصورت static اعلان شده و فقط حاوی متدهای static می باشد:

static class CompanyEmployee
{
    public static void DoSomething() { /*...*/ }
    public static void DoSomethingElse() { /*...*/  }
}

یک ثابت یا اعلان نوع بصورت ضمنی عضوی static است.

نمی توان از طریق یک نمونه (instance) به یک عضو ایستا رجوع کرد. در عوض ، می توان از طریق نام نوع به آن مراجعه کرد. برای مثال ، کلاس زیر را در نظر بگیرید:

public class MyBaseC
{
    public struct MyStruct
    {
        public static int x = 100;
    }
}

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

کلیدواژه stackalloc

در زمینه کدنویسی ناامن (unsafe code context) ، کلمه کلیدی stackalloc برای تخصیص یک بلوک حافظه در پشته (stack) بکار می رود.

int* fib = stackalloc int[100];

ملاحظات

مثال زیر سری فیبوناچی را که هر عدد حاصل جمع دو عدد قبل از خود در سری می باشد را تا 100 عدد ، تولید می کند . در کد زیر ، بلوکی از حافظه که اندازه آن برای نگهداری 100 عنصر از نوع int کافی است، در stack تخصیص داده شده نه در حافظه heap. آدرس این بلوک حافظه در اشاره گر fib ذخیره شده است (البته مثال زیر این کار را برای 20 عدد انجام می دهد که برای حفظ امانت عدد 100 را تغییر ندادم). این حافظه تحت تاثیر زباله جمع کن (Garbage Collector) قرار نمی گیرد و بنابراین مجبور نیستیم که با استفاده از کلمه کلیدی fixed ثابت شود. عمر این بلوک حافظه بستگی به عمر متدی دارد که این بلوک را تعریف کرده است. شما نمی توانید قبل از پایان متد این حافظه را آزاد کنید.

استفاده از stackalloc فقط در اعلان های متغیرهای محلی معتبر است.

امنیت

کد unsafe از امنیت کمتری نسبت به کد safe برخوردار است. هرچند استفاده از stackalloc بصورت اتوماتیک امکانات تشخیص تجاوز از بافر (buffer overrun detection) زبان زمان اجرای عمومی (CLR) را فعال می کند. اگر یک تجاوز بافر تشخیص داده شود، با بیشترین سرعت ممکن پردازش خاتمه پیدا می کند تا شانس اجرای کدهای مخرب به حداقل برسد.

مثال

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

کلیدواژه sizeof

در نوع های مدیریت نشده، برای بدست آوردن اندازه آن نوع بر حسب بایت استفاده می شود. نوع های مدیریت نشده شامل نوع های توکار (built-in) که در جدولی که بعدا" می آید لیست شده اند و همچنین نوع های زیر هستند:

  • نوع های شمارشی (Enum types)
  • نوع های اشاره گر (Pointer types)
  • ساختارهای کاربر-تعریف که حاوی هیچ فیلد یا پراپرتی نوع مرجع نباشد

مثال زیر چگونگی بدست آوردن اندازه یک نوع int را نشان می دهد:

// Constant value 4:
int intSize = sizeof(int); 

ملاحظات

از نسخه 2.0 سی شارپ به بعد، اعمال sizeof روی نوع های توکار ، دیگر نیازی به استفاده از شیوه unsafe ندارد.

عملگر sizeof را نمی توان overload کرد. مقدار برگشتی توسط عملگر sizeof از نوع int است. جدول زیر مقادیر ثابتی که جایگزین عبارت sizeof با عملوندهای ورودی از نوع های خاص را نشان می دهد:

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

کلیدواژه short

کلمه کلیدی short یک نوع داده ای صحیح معرفی می کند که مقادیر را طبق شرایط زیر ذخیره می کند.

  • نوع : short
  • محدوده : 32,768- تا 32,767
  • اندازه : صحیح علامتدار 16-بیتی
  • نوع دات نتی: System.Int16

لیترال ها

شما می توانید یک متغیر short را بصورت زیر اعلان و مقدار دهی اولیه کنید:

short x = 32767;

در اعلان قبل، لیترال صحیح 32767 بطور ضمنی از int به short تبدیل شده است. اگر لیترال صحیح در محل ذخیره سازی short جا نشود، یک خطای کامپایل رخ می دهد.

وقتی از متدهای overload شده استفاده می کنید، باید از یک عملگر قالبریز (cast) استفاده کنید. برای مثال متدهای overload شده زیر را که از پارامترهای int و short استفاده می کنند، در نظر بگیرید:

public static void SampleMethod(int i) {}
public static void SampleMethod(short s) {}

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