اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

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

  • ۱
  • ۰

کلمه کلیدی sealed

اصلاحگر sealed وقتی به یک کلاس اعمال می شود، از ارث بری کلاس های دیگر از این کلاس جلوگیری می کند. در مثال زیر کلاس B از کلاس A ارث بری می کند، اما هیچ کلاسی نمی تواند از کلاس B ارث بری کند.

class A {}    
sealed class B : A {}

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

مثال

در مثال زیر ، Z از Y ارث می برد اما Z نمی تواند تابع مجازی F را که در X اعلان شده و در Y مهروموم (sealed) شده را رونویسی (override) کند.

class X
{
    protected virtual void F() { Console.WriteLine("X.F"); }
    protected virtual void F2() { Console.WriteLine("X.F2"); }
}
class Y : X
{
        sealed protected override void F() { Console.WriteLine("Y.F"); }
        protected override void F2() { Console.WriteLine("X.F3");}
}
class Z : Y
{
    // Attempting to override F causes compiler error CS0239.
    // protected override void F() { Console.WriteLine("C.F"); }

    // Overriding F2 is allowed.
    protected override void F2() { Console.WriteLine("Z.F2"); }
}

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

کلمه کلیدی sbyte

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

  • نوع: sbyte
  • محدوده: 128- تا 127
  • اندازه: صحیح علامت دار 8-بیتی
  • نوع دات نتی: System.SByte

لیترال ها

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

sbyte sByte1 = 127;

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

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

public static void SampleMethod(int i) {}
public static void SampleMethod(sbyte b) {}

استفاده از قالبریز sbyte تضمین می کند که نوع درست فراخوانی خواهد شد. برای مثال:

// Calling the method with the int parameter:
SampleMethod(5);
// Calling the method with the sbyte parameter:
SampleMethod((sbyte)5);

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

کلیدواژه return

بیان return روند اجرای متدی را که در آن قرار گرفته را متوقف کرده و کنترل را به جایی که متد فراخوانی شده بازمی گرداند. این بیان همچنین می تواند یک مقدار اختیاری را بازگرداند. اگر نوع برگشتی متد void باشد، می توان از بیان return صرف نظر کرد.

اگر بیان return داخل یک بلوک try قرار گرفته باشد، قبل از اینکه کنترل به محل فراخوانی متد برگردد، بلوک finally (درصورت وجود) اجرا می شود.

مثال

در مثال زیر، متد()A متغیر area را بصورت مقدار double برگشت می دهد.

class ReturnTest
{
    static double CalculateArea(int r)
    {
        double area = r * r * Math.PI;
        return area;
    }

    static void Main()
    {
        int radius = 5;
        double result = CalculateArea(radius);
        Console.WriteLine("The area is {0:0.00}", result);

        // Keep the console open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: The area is 78.54
  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

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

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

کلمه کلیدی public

کلمه کلیدی public یک اصلاحگر سطح دسترسی برای نوع ها و اعضای نوع است. دسترسی public بیشترین سطح دسترسی مجاز است. هیچ محدودیتی در دستیابی به اعضای public (عمومی) وجود ندارد. مانند مثال:

class SampleClass
{
    public int x; // No access restrictions.
}

مثال

در مثال زیر، دو کلاس با نامهای PointTest و MainClass اعلان شده اند. اعضای عمومی x و y از کلاس PointTest مستقیما" توسط MainClass دستیابی می شوند.

class PointTest
{
    public int x; 
    public int y;
}

class MainClass4
{
    static void Main() 
    {
        PointTest p = new PointTest();
        // Direct access to public members:
        p.x = 10;
        p.y = 15;
        Console.WriteLine("x = {0}, y = {1}", p.x, p.y); 
    }
}
// Output: x = 10, y = 15

اگر سطح دسترسی public را به private یا protected تغییر دهید، پیغام خطای زیر را دریافت خواهید کرد:

'PointTest.y' is inaccessible due to its protection level.

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

کلیدواژه protected

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

مثال

یک عضو protected از یک کلاس فقط زمانی از طریق کلاس های مشتق شده قابل دسترسی است که آن دسترسی از از طریق کلاس مشتق شده اتفاق بیافتد. برای مثال، قطعه کد زیر را در نظر بگیرید:

class A
{
    protected int x = 123;
}

class B : A
{
    static void Main()
    {
        A a = new A();
        B b = new B();

        // Error CS1540, because x can only be accessed by
        // classes derived from A.
        // a.x = 10; 

        // OK, because this class derives from A.
        b.x = 10;
    }
}

قسمت a.x=10 یک خطا تولید می کند زیرا این انتساب در داخل متد ایستای Main صورت گرفته که نمونه ای از کلاس B نیست.

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

کلمه کلیدی private

کلمه کلیدی private (خصوصی) یک اصلاحگر دسترسی عضو است. دسترسی private کمترین سطح دسترسی مجاز است. اعضای private فقط از داخل بدنه کلاس یا ساختاری که در آن اعلان شده اند در دسترس هستند. مانند مثال زیر:

class Employee
{
    private int i;
    double d;   // private access by default
}

نوع های تودرتوی داخل یک بدنه یکسان هم می توانند به آن اعضای خصوصی دسترسی داشته باشند.

مثال

در این مثال، کلاس Employee حاوی دو عضو داده ای خصوصی به نام های name و salary است. این اعضا به عنوان اعضای خصوصی، قابل دسترسی نیستند بجز توسط متد های عضو (member method). متدهای عمومی (public) به نام های GetName و Salary ، برای دسترسی کنترل شده به اعضای خصوصی ، اضافه شده اند. عضو name از طریق یک متد public دسترسی شده است و عضو salary از طریق یک پراپرتی عمومی فقط خواندنی ، دسترسی شده است.

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

کلمه کلیدی params

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

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

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

مثال

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

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

اصلاحگر override

اصلاحگر override برای گسترش یا اصلاح پیاده سازی یک متد، پراپرتی، شاخصگر (indexer) یا رویداد ارث بری شده، لازم است.

مثال

در این مثال، کلاس Square باید یک پیاده سازی بازنویسی شده(override) از Area ارائه دهد، زیرا Area از کلاس چکیده ShapesClass ارث بری شده است:

abstract class ShapesClass
{
    abstract public int Area();
}
class Square : ShapesClass
{
    int side = 0;

    public Square(int n)
    {
        side = n;
    }
    // Area method is required to avoid
    // a compile-time error.
    public override int Area()
    {
        return side * side;
    }

    static void Main() 
    {
        Square sq = new Square(12);
        Console.WriteLine("Area of the square = {0}", sq.Area());
    }

    interface I
    {
        void M();
    }
    abstract class C : I
    {
        public abstract void M();
    }

}
// Output: Area of the square = 144

یک متد override یک پیاده سازی جدید از عضوی که از یک کلاس پایه ارث بری شده ارائه می دهد. متدی که با اعلان override بازنویسی شده به عنوان متد پایه ای بازنویسی شده شناخته می شود. متد پایه ای بازنویسی شده، باید نسبت به متد override امضای یکسانی داشته باشد.

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

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

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

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

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

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

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