از اصلاحگر static برای اعلان یک عضو ایستا استفاده کنید. اعضای ایستا (static) بجای اینکه به شئی خاصی متعلق باشند ، به خود نوع وابستگی دارند. اصلاحگر static را می توان با کلاس ها ، فیلدها ، متدها ، پراپرتی ها ، عملگرها ، رویداد ها و سازنده ها استفاده کرد ، اما نمی توان از آنها برای شاخصگرها (indexer) ، مخرب ها یا نوع هایی دیگر بجز کلاس ها استفاده کرد.
مثال
کلاس زیر بصورت static اعلان شده و فقط حاوی متدهای static می باشد:
یک ثابت یا اعلان نوع بصورت ضمنی عضوی static است.
نمی توان از طریق یک نمونه (instance) به یک عضو ایستا رجوع کرد. در عوض ، می توان از طریق نام نوع به آن مراجعه کرد. برای مثال ، کلاس زیر را در نظر بگیرید:
برای مراجعه به عضو ایستای x از نام کامل MyBaseC.MyStruct.x استفاده کنید مگر اینکه آن عضو از طریق حوزه ای (scope) یکسان قابل دسترسی باشد:
یک نمونه از یک کلاس (شیئ) حاوی کپی های جداگانه از همه فیلدهای آن نمونه از کلاس است ، در صورتیکه برای فیلدهای static فقط یک کپی از هر فیلد (برای تمام نمونه ها) وجود دارد.
برای رجوع به متدها و دستیابی کننده های پراپرتی ایستا (static) ، استفاده از کلمه کلیدی this امکان پذیر نیست.
اگر کلمه کلیدی static بر روی یک کلاس اعمال شود، تمام اعضای آن کلاس باید static باشند.
کلاس های معمولی و کلاس های static ممکن است دارای سازنده های ایستا باشند. سازنده های ایستا در نقطه ای بین زمان شروع برنامه و نمونه سازی کلاس، فراخوانی می شوند.
برای توضیح در مورد اعضای static، یک کلاس که نشاندهنده کارمند یک شرکت است را در نظر بگیرید. فرض کنید که کلاس دارای متدی برای شمارش کارمندها و یک فیلد برای ذخیره سازی تعداد کارمندها باشد. متد و فیلد هچکدام وابسته به کارمند نمونه نمی باشند. در عوض آنها متعلق به کلاس شرکت هستند. بنابراین آنها می بایست بصورت اعضای static کلاس اعلان شوند.
این مثال نام (name) و شناسه (ID) یک کارمند را می خواند، شمارنده کارمند را یکی افزایش داده و اطلاعات مربوط به کارمند جدید و تعداد جدید کارمندها را نمایش می دهد. برای سادگی کار، این برنامه تعداد فعلی کارمندان را از صفحه کلید می خواند. در یک برنامه واقعی ، این اطلاعات می بایست از فایل خوانده شود.
این مثال نشان می دهد که اگرچه شما می توانید یک فیلد ایستا را با استفاده از فیلد ایستای دیگری که هنوز اعلان نشده، مقداردهی اولیه کنید؛ نتایج تا زمانی که صریحا" یک مقدار به فیلد static انتساب ندهید، تعریف نشده هستند.