PDA

View Full Version : کار با متد های static و مفهم دقیق زمان استفاده از آنها



ali_mnkt
پنج شنبه 22 تیر 1391, 09:57 صبح
سلام

من این سوال رو دیروز مطرح کرده بودم اما متاسفانه دوستان حذف کردن بدون اینکه مفهوم سئوال رو بررسی کنند (فکر کنم عنوان خوبی براش انتخاب نکرده بودم ، فکر کردن تکراریه)

خوب همه ما تعریف متدها و فیلد های static رو کم وبیش می دونیم . از نظر مفهومی خصوصیات static بیشتر قابل فهم هستن ، خوب با یم مثال سئوالم رو مطرح می کنم :
فرض کنید کلاس صندوق رو پیاده سازی کردیم و 5 شی از اون ایجاد کردیم اگر بخواهیم بفهمیم که هر صندوق چقدر پول دریافت کرده اند باید یک فیلد static در نظر بگیریم و درآمد های صندوق ها رو در اون بریزیم و با هم جمع کنیم . خوب این مشکلی نداره اما مفهوم متد های static یکم نامفهومه چون ما باید متدی ایجاد کنیم که در سطح کلاس باشه و نه در سطح شی . کسی می تونه یک مثال خوب برای متدهای static بزنه ؟
آیا متد های static ایجاد شده اند که برای دسترسی به آنها نیازی به ایجاد شی از کلاس نباشه ؟ خوب این چه مزیتی داره ؟

ali_kolahdoozan
پنج شنبه 22 تیر 1391, 12:39 عصر
خوب شما مثال میخواستی . اینم مثال :

یک کلاس داری حاوی N متد که این متدها زیاد در سطح برنامت نیاز هستند. مثلا تابع تبدیل تاریخ که خودت نوشتی . هر بار که کارش داری باید از کلاس Instant بگیری ، اما با Static کردن دیگه لازم نیست و با آوردن نام کلاس میتونی بری سراغ متد . ضمننا به Extension متدها هم نگاهی بندازی بد نیست . بیشتر با هم آشنا میشید.

ali_mnkt
پنج شنبه 22 تیر 1391, 13:11 عصر
خوب شما مثال میخواستی . اینم مثال :

یک کلاس داری حاوی N متد که این متدها زیاد در سطح برنامت نیاز هستند. مثلا تابع تبدیل تاریخ که خودت نوشتی . هر بار که کارش داری باید از کلاس Instant بگیری ، اما با Static کردن دیگه لازم نیست و با آوردن نام کلاس میتونی بری سراغ متد . ضمننا به Extension متدها هم نگاهی بندازی بد نیست . بیشتر با هم آشنا میشید.

خوب پس به این نتیجه می رسیم که متد های static کاری به غیر از کم کردن کار ما انجام نمی دن یعنی فقط به این درد می خورن که اونها رو بدون ایجاد شی از کلاس بشه فراخوانی کرد . درسته و یا مثال بهتری هم برای کاربرد این متدها وجود داره ؟

ali_kolahdoozan
پنج شنبه 22 تیر 1391, 13:13 عصر
این فقط یک مثال ساده بود . اگر بخام همش رو برات باز کنم خب باید برات داستان تعریف کنم و قبل از بنده جنابStephen Walther زحمت این کار را در C#‎‎ 4 Unleashed کشیده اند. لطفا مطالعه فرمائید .

گوگل بیچاره هم هست : http://www.dotnetperls.com/static-method

http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

ali_mnkt
پنج شنبه 22 تیر 1391, 23:20 عصر
این فقط یک مثال ساده بود . اگر بخام همش رو برات باز کنم خب باید برات داستان تعریف کنم و قبل از بنده جنابStephen Walther زحمت این کار را در C#‎‎ 4 Unleashed کشیده اند. لطفا مطالعه فرمائید .

گوگل بیچاره هم هست : http://www.dotnetperls.com/static-method

http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx

توی لینک هایی که گذاشتی هم همون مسائل همیشگی رو گفته . من دنبال یک مثال کاربردی از دلایل استفاده از متد های static هستم . آیا می تونی یک مثال کاربردی بزنی دوست من ؟

salehbagheri
جمعه 23 تیر 1391, 00:10 صبح
توی لینک هایی که گذاشتی هم همون مسائل همیشگی رو گفته . من دنبال یک مثال کاربردی از دلایل استفاده از متد های static هستم . آیا می تونی یک مثال کاربردی بزنی دوست من ؟

دوست عزیز! آقای کلاه دوزان در پست اول خودشون از Extension Method ها صحبت کردند که میتونه یکی از بهترین مثال ها باشه!

همچنین استفاده از متدهای static در قسمت web App برای ارتباط کاربران با Database (که دلایل فنی بسیاری داره) نمونه دیگری از این موضوع هست.