اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

اصلاحگر 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;
    }
}

برای مراجعه به عضو ایستای x از نام کامل MyBaseC.MyStruct.x استفاده کنید مگر اینکه آن عضو از طریق حوزه ای (scope) یکسان قابل دسترسی باشد:

Console.WriteLine(MyBaseC.MyStruct.x);

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

برای رجوع به متدها و دستیابی کننده های پراپرتی ایستا (static) ، استفاده از کلمه کلیدی this امکان پذیر نیست.

اگر کلمه کلیدی static بر روی یک کلاس اعمال شود، تمام اعضای آن کلاس باید static باشند.

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

برای توضیح در مورد اعضای static، یک کلاس که نشاندهنده کارمند یک شرکت است را در نظر بگیرید. فرض کنید که کلاس دارای متدی برای شمارش کارمندها و یک فیلد برای ذخیره سازی تعداد کارمندها باشد. متد و فیلد هچکدام وابسته به کارمند نمونه نمی باشند. در عوض آنها متعلق به کلاس شرکت هستند. بنابراین آنها می بایست بصورت اعضای static کلاس اعلان شوند.

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

public class Employee4
{
    public string id;
    public string name;

    public Employee4()
    {
    }

    public Employee4(string name, string id)
    {
        this.name = name;
        this.id = id;
    }

    public static int employeeCounter;

    public static int AddEmployee()
    {
        return ++employeeCounter;
    }
}

class MainClass : Employee4
{
    static void Main()
    {
        Console.Write("Enter the employee's name: ");
        string name = Console.ReadLine();
        Console.Write("Enter the employee's ID: ");
        string id = Console.ReadLine();

        // Create and configure the employee object:
        Employee4 e = new Employee4(name, id);
        Console.Write("Enter the current number of employees: ");
        string n = Console.ReadLine();
        Employee4.employeeCounter = Int32.Parse(n);
        Employee4.AddEmployee();

        // Display the new information:
        Console.WriteLine("Name: {0}", e.name);
        Console.WriteLine("ID:   {0}", e.id);
        Console.WriteLine("New Number of Employees: {0}",
                      Employee4.employeeCounter);
    }
}
    /*
    Input:
    Matthias Berndt
    AF643G
    15
     * 
    Sample Output:
    Enter the employee's name: Matthias Berndt
    Enter the employee's ID: AF643G
    Enter the current number of employees: 15
    Name: Matthias Berndt
    ID:   AF643G
    New Number of Employees: 16
    */

این مثال نشان می دهد که اگرچه شما می توانید یک فیلد ایستا را با استفاده از فیلد ایستای دیگری که هنوز اعلان نشده، مقداردهی اولیه کنید؛ نتایج تا زمانی که صریحا" یک مقدار به فیلد static انتساب ندهید، تعریف نشده هستند.

class Test
{
   static int x = y;
   static int y = 5;

   static void Main()
   {
      Console.WriteLine(Test.x);
      Console.WriteLine(Test.y);

      Test.x = 99;
      Console.WriteLine(Test.x);
   }
}
/*
Output:
    0
    5
    99
*/

نظرات (۲)

سلام راستش منم 5gig رو زدم نرفت بلاک شده بود یه گزینه ای بود تو صفحه که می گفت نادیده بگیرمش منم اونو زدم رفت . البته شما استاد ماییدا فکر کردم شاید کمکی باشه
پاسخ:
سلام.
اگر توی گوگل سرچ کنید به سایت های هاستینگ رایگان زیادی می رسید.
به نظرم رسید که اینطوری سریعتر به جواب خواهید رسید.

موفق باشید
یاعلی
سلام ممنون از جوابتون ولی من یه برنامه ای برا آلبوم تصاویر تو ای اس پی مینویسم وقتی idx رو بصورت int تعریف میکنم کلید بعدی درست عمل نمی کنه و تو عکس دومی گیر میکنه ولی وقتی بصورتstatic int تعریف می کنم درست عمل می کنه برا همین فرقشونو پرسیدم. برنامش اینه
//Program Code
public partial class Gallery : System.Web.UI.Page
{
static int idx = 0;
FileInfo[] fi;

protected void Page_Load(object sender, EventArgs e)
{
string path="~/images";
DirectoryInfo dir = new DirectoryInfo(Server.MapPath(path));

fi = dir.GetFiles();

Image1.ImageUrl = "images/" + fi[0].Name;
}
protected void btnNext_Click(object sender, EventArgs e)
{
if (idx < fi.Length - 1)
idx++;
else
idx = 0;

Image1.ImageUrl = "images/" + fi[idx].Name;
}



پاسخ:
سلام.
علتش هم همونی هست که خدمتتون عرض کردم. احتمال وقتی روی دکمه کلیک می کنید، عمل PostBack انجام میشه که باعث لود مجدد صفحه خواهد شد. بنابراین، مقدار تمام متغیرهای عضو کلاس Gallery بجز مواردی که اصلاحگر static دارند، به مقدار پیشفرض تغییر می‌کنند.

ارسال نظر

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