PDA

View Full Version : ايجاد يک فيلد اشتراکي



zkazemi
شنبه 17 مرداد 1388, 09:04 صبح
همانطور که در قسمت قبل اشاره شد شما مي‌توانيد وقتي يک فيلد را تعريف مي‌کنيد از کلمه کليدي Static استفاده نماييد. با اين عمل شما به کليه اشياء (نمونه‌ها) ساخته شده توسط يک کلاس اجازه استفاده از فيلدي را که يکبار ايجاد کرده‌ايد خواهيد داد. در مثال زير فيلد استاتيک به نام NumCircle در کلاس Circle هر نوبت که يک شيء جديد از کلاس Circle ساخته مي‌شود يک واحد افزايش مي‌يابند:


class Circle
{
public Circle () // پيش فرض Constructor
{
radius = 0.0;
NumCircles ++;
}
public Circle (double initialRadius) // overloaded Constructor
{
radius = initialRadius;
NumCircle ++;
}

private double radius;
public Static int NumCircles = 0;
}

کليه نمونه‌هاي کلاس Circle فيلدي بنام Num Circle را شناخته و با آن در ارتباط هستند و بنابراين جمله NumCircle++; باعث مي‌شود يک متغير مشابه در هر بار ايجاد نمونه جديد از کلاس circle يک واحد اضافه گردد. شما به فيلد NumCircle به جاي دسترسي از طريق نمونه‌ها از طريق خود کلاس Circle دسترسي خواهيد داشت براي مثال:
Console.WriteLine (“Number of Circle Objects: {0}”, Circle.NumCircles);
در مثال بالا {0} به عنوان جايگاهي است که به جاي آن مقدار Circle.NumCircles قرار خواهد گرفت.
نکته:
Static Method با نام Class Method نيز شناخته مي‌شود. در صورتيکه به فيلدهاي Static, Class field گفته نمي‌شود بلکه گاهي Static variable نيز گفته مي‌شود.

تعريف فيلد Static با کلمه کليدي Const:
شما همچنين مي‌توانيد يک فيلدي را که بصورت Static تعريف نموده‌ايد با آوردن کلمه کليدي Const بصورتي تعريف نماييد که هرگز تغيير نکند. Const مخفف کلمه Constant به معناي مقدار ثابت مي‌باشد. يک فيلد ثابت ديگر از کلمه Static هنگام تعريف استفاده نمي‌کند اما با اين وجود هنوز Static مي‌باشد. به دلائلي که از حوصله خارج است شما فقط وقتي مي‌توانيد فيلدهايي را بصورت Const تعريف کنيد که از نوع enum, primitive type (نوع داده‌هاي اصلي) و يا String باشند. براي مثال, در مثال زير نشان داده شده که کلاس Math چگونه يک ثابت بنام PI را تعريف نموده است.


class Math
{

public Const double PI=3.1415126535879;