اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

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

  • ۱
  • ۰

کلیدواژه 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 است:

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

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

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

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

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

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

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

کلیدواژه enum

کلمه کلیدی enum برای اعلان مجموعه شمارشی (enumeration) استفاده می شود. enumeration یک نوع متمایز شامل مجموعه ای نامدار از ثابت ها است که به آنها لیست شمارشی می گویند.

معمولا" بهترین راه، اعلان enum مستقیما" درون namespace است، در نتیجه همه کلاس های داخل namespace می توانند بصورت مساوی به آن دسترسی داشته باشند. هرچند، یک enum می تواند بصورت تودرتو ، درون یک کلاس یا ساختار (struct) قرار گیرد.

بصورت پیش فرض، اولین enumerator (اعضای enum) مقدار صفر دارد و بقیه اعضا مقدارشان بصورت متوالی، یکی یکی افزایش پیدا می کند.

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

در این لیست شمارشی، Sat مقدار صفر دارد، Sun مقدار 1 دارد، Mon مقدار 2 دارد و الی آخر. enumerator ها می توانند برای رونویسی مقدار پیش فرضشان، مقدار دهی اولیه شوند. برای مثال:

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

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

کلمه کلیدی switch

بیان switch یک بیان کنترلی است که بوسیله انتخاب های چندگانه و مجموعه های شمارشی (enumerations) ، با پاس دادن کنترل اجرای برنامه به یکی از بیان های case داخلی اش، روند اجرایی برنامه را کنترل می کند؛ مانند مثال زیر:

int caseSwitch = 1;
switch (caseSwitch)
{
    case 1:
        Console.WriteLine("Case 1");
        break;
    case 2:
        Console.WriteLine("Case 2");
        break;
    default:
        Console.WriteLine("Default case");
        break;
}

کنترل اجرای برنامه به بیان case ی که با مقدار switch یکسان باشد، منتقل می شود. بیان switch می تواند حاوی هر تعداد از نمونه های case باشد، اما دو بیان case نمی توانند مقادیر یکسان داشته باشند.

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

بیان foreach-in

سلام! امروز با توضیح مختصری از بیان یا به اصطلاح statement تکرار کننده foreach در خدمتتون هستم. در این مقاله و مقالات دیگری که در همین وبلاگ قرار دارند، منظور من از کلمه "بیان" همان statement هست.

گروهی از دستورهای جاسازی شده درون خود را برای هرکدام از عناصر آرایه ای، یا شئ کلکسیونی ای که رابط

System.Collection.IEnumerable

یا

System.Collection.Generic.IEnumerable<T>

 را پیاده سازی (Implement) کند، تکرار می کند.

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

این مطلب رو با یک مثال شروع می کنم:

enum E:byte{sat,sun=2,mon,tue=8};

نوع پیش فرض در enum نوع int است ولی می توان شبیه مثال بالا نوع های دیگر را به غیر از char به آن اختصاص داد.

با صفت FlagsAttribute می توان کارکرد enum را به طرز جالبی تغییر داد:

[FlagsAttribute]
enum E{sat=0,sun=1,mon=2,tue=4};
for(int i=0;i<4;i++){
Console.WriteLine(((E)i).ToString());
}

جالب اینجاست که هرجا که مقدار معادل متغیرشمارنده حلقه (i) در enum وجود نداشته باشد، ثابت های دیگر را طوری با هم ترکیب می کند تا آن مقدار بدست بیاید. البته باید دقت شود که حتما شماره گذاری عناصر enum توانی از 2 باشد. و از صفت FlagsAttribute قبل از تعریف نوع شمارشی (enum) استفاده شود.

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