mohammad mhammadi
mohammad mhammadi
خواندن ۱ دقیقه·۲ سال پیش

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 هم باشه ، این به این معنیه که هر چقدم از این کلاس نمونه سازی شه ، این کانستراکتور فقط یکبار اجرا می شه
نمونه سازیکلاس
شاید از این پست‌ها خوشتان بیاید