PDA

View Full Version : تفاوت متدهای Static و متدهای غیر Static



Jean Reno
شنبه 22 خرداد 1389, 18:34 عصر
همان طور که می دانیم متغیرهای از نوع Static که در یک کلاس تعریف می شوند بین تمام شی هایی که از آن کلاس ایجاد میشوند به اشتراک گذاشته می شود که این امر منجر به این می شود که هر متغیر Static آخرین مقداری را که می گیرد حفظ کرده و برای اشیا دیگر نیز مورد استفاده قرار میدهد .



private static string Str_FirstName;

1. سوال این است که کاربرد متدها و توابع Static چیست ؟
2. با توجه به این نکته که در متدهای Static تنها می توان از متغیرهای کلاس که از نوع Static هست استفاده کرد ، آیا تنها تفاوت متدهای Static و متدهای غیر Static تنها در همین موضوع است ؟



public static void ListName( )
{
// Code
}

sia_2007
شنبه 22 خرداد 1389, 20:09 عصر
استفاده در Extension Method و از این رهگذار استفاده زیاد در LINQ
در صورتی که بخواهیم از یک کلاس فقط و فقط یک آبجکت ساخته شود.
این حالت در برنامه های Multi Thread نیاز به توجه دارد.
کلاس Static ؛ Constructor غیر پیش فرض ندارد.
---
اگه کلاسی متدی داشت؛ که به خود اون کلاس مراجعه نمیکرد؛ کاندید static شدنه.
مراجعه کردن یعنی این که مثلا به پراپرتیهای آبجکتهای ساخته شده از اون کلاس احتیاج نداشته باشه؛
نه این که بیایم اون فیلد و پراپرتی رو هم static کنیم !
---
کلاس System.Math مثال خوبیه.
چون متدهای Static اش به خود اون کلاس کاری ندارند.
البته این کلاس در کل فیلد نداره؛ ولی حرف من کلیه.
و اگه فیلدی هم داره در اصل CONST هستش و دقیقا معادل خود Static Member عمل میکنه.
به نظر من فیلدی که تغییر پذیره؛ حق Static شدن رو نداره.