مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

Class ها در سی شارپ - Static members قسمت هشتم


اعضای استاتیک (Static members)

 

در مقاله قبلی در مورد کلاس استاتیک (static class) صحبت کردیم در این  مقاله قصد داریم تا با اعضای استاتیک (static members) اشنا شویم .

 در مقاله قبلی در مورد کلاسهای استاتیک (static class) صحبت کردیم و آن ها را نوعی از نوع داده کلاس (class) ، معرفی کردیم که دارای خصوصیت خاصی ، همچون استاتیک static) بودن تمام اعضا است. و گفته شد که کامپایلر تضمین می کند هیچ شی ای (object) از نوع کلاس های استاتیک (static class) ساخته نشود و فراخوانی اعضای کلاس از طریق نام کلاس انجام می شود. در این مقاله قصد داریم تا با اشنایی اعضای استاتیک (static members) بحث های مربوط به نوع داده کلاس درسی شارپ را ادامه دهیم .

 اعضای استاتیک (static members) :

  • اعضای استاتیک می تواند شامل فیلدهای استاتیک (static fields) ، متدهای استاتیک (static methods) ، رخداد های استاتیک (static events) و خصوصیات استاتیک (static properties) باشند.  
  • اعضای استاتیک (static members) نه تنها در کلاس های استاتیک (static class) قابل استفاده هستنند بلکه در کلاس های غیر استاتیک (none static class) نیز می توانند تعریف شوند. اما برای فراخوانی اعضای استاتیک (static members) در کلاس های غیر استاتیک (none static class) مانند کلاس های استاتیک (static class) ، از نام کلاس برای فراخوانی ان ها استفاده می شود نه از نام شی (object).
  • متد های استاتیک (static methods) و خصوصیات استاتیک (static properties) نمی توانند دربدنه خود به فیلدهای غیراستاتیک (none static fields) و یا رخدادهای غیراستاتیک (none static events) و یا شی (object) تعریف شده در بدنه کلاس دسترسی داشته باشند مگر اینکه به صورت پارامتر به ان ها ارسال شوند.
  • اعضای غیر استاتیک (none static members) می توانند دربدنه خود به اعضای استاتیک (static members)  دسترسی داشته باشند. 
  •  در تعریف اعضای استاتیک از کلمه کلیدی استاتیک (static) استفاده می شود .

تفاوت اعضای استاتیک و غیراستاتیک

  • اعضای استاتیک (static members) بین تمامی شی های یک کلاس مشترک هستند و مقدار ان ها در بین تمامی شی های یک کلاس مشترک است. ( مانند متغیر count در مثال زیر) به عبارت دیگر متعلق به کلاس هستند .

  • اعضای غیر استاتک متعلق به شی های ایجاد شده هستند نه کلاس .

مثال : تعریف یک کلاس با اعضای استاتیک وغیر استاتیک

namespace ClassStatment

{   

    public class rectangle

    {     

        static int  count =0;

        public rectangle()

        {

            count = count + 1;

        }

        double width { get; set; }
        double height { get; set; }

        public  double area()

        {        

            return (width + height) * 2;

        }

      
        public static int   objectCount()

        {

            return (count);

        }       

      }

  class Program

    {
        static void Main(string[] args)

        {
            rectangle oRectangle1 = new rectangle();

            rectangle oRectangle2 = new rectangle();

            rectangle oRectangle3 = new rectangle();

            rectangle oRectangle4 = new rectangle();

            int totalObject = rectangle.objectCount();

            Console.WriteLine("the toatal number of object created= "+ totalObject);

        }

    }
}

در این مثال درکلاس rectangle یک متغیر استاتیک (static variable) با نام count تعریف شده است که مقدار آن در بین تمام اشیا ، که متعلق به نوع داده کلاس rectangle هستند، مشترک است. در نتیجه در این مثال از ان برای شمارش تعداد شی های ایجاد شده استفاده شده است به این منظور در سازنده کلاس به مقدار متغیر count یکی اضافه می شود تا به این ترتیب با ایجاد هر شی و فراخوانی سازنده یکی به مقدار متغیر مشترک اضافه شود.  و همین طور برای دستیابی به مقدار متغیر استاتیک یک تابع استاتیک تعریف شده است و در متد main بعد از تعریف چند شی ، این تابع برای نمایش تعداد اشیا ایجاد شده فراخوانی شده است. خروجی به صورت زیر خواهد بود :

the toatal number of object created=   4

 

فیلدهای استاتیک :

نکته

دو تا از موارد استفاده از فیلد های استاتیک :

  • در نگه داشتن  تعداد شی های ایجاد شده از یک نوع داده کلاس درسی شارپ
  • نگه داشتن مقادیر مشترک بین تمام نمونه های ایجاد شده از یک نوع داده کلاس درسی شارپ

 

متد های استاتیک :

نکته

  • متد های استاتیک (static methods) می توانندoverload شوند اما نمی توانند override شوند. زیرا انها متعلق به کلاس هستند و نه یک شی. ( در رابطه با overloading و overriding در مقالات بعدی بحث خواهد شد. )
  • سی شارپ از متغیرهای استاتیک (static variables) که به صورت محلی در بدنه متدهای استاتیک (static methods) و غیراستانیک (none static methods) ، تعریف می شوند حمایت نمی کند و ایجاد خطای زمان کامپایل می کند.

                    

مثال : ایجاد خطای در تعرف متغیر استاتیک (static variable) که به صورت محلی در بدنه متدها تعریف شده است .

public class rectangle

    { 

        public  double area(double width, double height)

        {

            static int count;
            return (width + height) * 2;

        }       

    }

درمثال بالا تعریف متغیر محلی با نام count در داخل متد area باعث خطای زیر خواهد شد :

 

  • از نظر سرعت اجرا بین دو تا متد استاتیک (static method) و غیراستاتیک (none static) با بدنه یکسان ، متد استاتیک (static method) یک مقدار سریع تر اجرا می شود. زیرا در فراخوانی متد غیراستاتیک ، باید غیر نال بودن شی (object) نیز چک شود که زمان بیشتری را به اجرا تحمیل می کند. هرچند اختلاف زمانی در بیشتر موارد بسیار ناچیز است.

 

گرد اوری : سمانه وزیریان

 

 

 

 

 

فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

آموزش ارسال پیامک، آموزش ارسال پیامک تکی و گروهی ، ارسال پیامک به صورت اختصاصی برای هر مشترک، دریافت پیامک، مشاهده وضعیت…

توضیحات کلی مجموعه:   آیا می دونید قیمت نرم افزارهای مدیریت پیامک در حدود 150 هزار تومان است؟ اما توسط این دوره شما میتونید با مبلغ بسیار کمتر یک نرم افزار مدیریت پیامک رو به صورت کاملا حر…
فصلِ: 9 , تعداد قسمت ها: 59 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل پایانی این دوره می باشد در مورد نحوه ساختن فایل نصبی سریع یا همان quick installer که روش پیشنهاد شده م…

توضیحات کلی مجموعه: پس از بازخوردهای بسیار خوبی که از دوره های آموزش برنامه نویسی سیستم اتوماسیون اداری و آموزش برنامه نویسی سیستم فروش و انبارداری مشاهده کردیم، تصمیم گرفتیم با توجه به درخ…
فصلِ: 13 , تعداد قسمت ها: 120 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

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

دوره صفر تا صد  آموزش برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری تحت شبکه. (توصیه می شود دومی مجموعه را حتما ببینید) امروزه اطلاعات یکی از مهمترین و با ارزشترین منابع هر اداره و یا ساز…
فصلِ: 4 , تعداد قسمت ها: 14 , سطح: مقدماتی

این فصل در یک نگاه:

توضیح تنظیمات گرافیک و صدا در یونیتی پیاده سازی منو ها …

به نام خدا   بازی‌سازی یک حرفه بسیار جذاب است و تبدیل شدن به یک بازی‌ساز حرفه‌ای آرزوی همه ماست. اینکه بتوانیم دنیای خاصی خلق کنیم و در این دنیا قوانین خود را پیاده کنیم، همیشه ما را به وج…
فصلِ: 11 , تعداد قسمت ها: 92 , سطح: صفر تا صد

این فصل در یک نگاه:

اجرای سیستم روی سیستم، قرار دادن سیستم روی سرور، تعریف Connetion String، آشنایی با فایل App.config، ساخت رشته اتصال به ص…

مهمترین تکنولوژیهای استفاده شده در این دوره پروژه محور (سیستم فروش کالا و انبارداری) طراحی گرافیکی به روش WPF (Windows Presentaion Foundation) آموزش کامل برنامه نویسی xaml (برای طراحی های …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید