static modifier در دات نت چیست
- فرض کنید داخل یک کلاس ساده ، یک متد داریم که static ، خب این یعنی از این متد یدونه داخل این کلاس بیشتر ساخته نمی شه به عبارت دیگه از این کلاس نمونه سازی کنیم ، به این متد دسترسی نداریم
class MyClass
{
public string name;
public static string website;
}
-----------------------------------------------------------------
class SeoncdClass
{
MyClass ali = new MyClass();
در این خط از کلاس نمونه سازی کردیم و خیلی راحت به فیلد هاش دسترسی داریم
ali.name = "ali";
اما به فیلد website چون بصورت static هست از طریق نمونه سازی بهش دسترسی ندارم و فقط از طریق نام کلاس بهش دسترسی داریم ( چون این فیلد برای همه کلاس های دیگه یکیه ولی فیلد های دیگه جاهای مختلف می تونن مقدارهای مختلف بگیرن )
ali.website = "varzesh.com"; // error
myclass.website = "vaarzesh.com";
}
- برای متد هم دقیقا همینطوره ، مثلا وقتی قراره یه متد فقط کارش این باشه که دو تا ورودی بگیره و اونهارو با هم جمع کنه ، چه نیازیه که اول از کلاسمون نمونه سازی کنیم ، بعدش بیایم به اون متد دسترسی داشته باشیم ، پس اون متدو static می کنیم و فقط با صدا کردن اسم کلاس به همراه نام متد ، در همه جای پروژه قابل دسترس خواهد بود
- اگه یه کلاس هم static باشه ، کاملا واضحه که کلیه اعضای کلاس static میشه و نمی شه از اون کلاس نمونه سازی کرد
- اگه داخل یه کلاس ، یه کانستراکتور داشته باشیم که static هم باشه ، این به این معنیه که هر چقدم از این کلاس نمونه سازی شه ، این کانستراکتور فقط یکبار اجرا می شه