PDA

View Full Version : سوال: منظور از تابع Void چیست؟



Black Shadow
چهارشنبه 09 اسفند 1396, 14:07 عصر
درود.
دوستان شرمنده بخاطر سوالم که میدونم بسیار مبتدی هست ولی واقعا متوجه نمیشم. همه جا رو گشتم و همه جا نوشته منظور از Void یعنی این تابع برگشتی نداره و نتیجه ای رو برنمیگردونه ولی من اصلا نمیفهمم این یعنی چی؟ یعنی چی این تابع برگشتی نداره؟ ممکنه ازتون خواهش کنم یکم واضحتر برای من این موضوع رو باز کنید!
خیلی ممنونم

رامین مرادی
چهارشنبه 09 اسفند 1396, 14:50 عصر
برای اینکه بهتر متوجه بشید من یه مثال میزنم
شما یه ماشین حسای دارید که از شما ورودی میگیره و بر اساس عملی که انجام میدید یه خروجی میده. مثلا عمل جمع رو یه تابع در نظر بگیرید. دوتا ورودی ازتون میگیره و یه خروجی بهتون میده. این شد یه تابع که خروجی داره.
حالا برا تابع بدون خروجی. مثلا مرتب یه نوتیفیکیشن یا پیام به کاربر نشون میدی مبنی بر مثلا اتمام باتری لپ تاپ . خب نیاز نیست این تابع خروجی داشته باشه. چون یه اعلانه . (این توابع رو میشه در جاهایی که هی کد تکراری میزنید هم استفاده کرد)
می تونید مطلب زیر رو هم بخونید
https://fa.wikipedia.org/wiki/%D9%86%D9%88%D8%B9_void

Black Shadow
شنبه 12 اسفند 1396, 13:53 عصر
برای اینکه بهتر متوجه بشید من یه مثال میزنم
شما یه ماشین حسای دارید که از شما ورودی میگیره و بر اساس عملی که انجام میدید یه خروجی میده. مثلا عمل جمع رو یه تابع در نظر بگیرید. دوتا ورودی ازتون میگیره و یه خروجی بهتون میده. این شد یه تابع که خروجی داره.
حالا برا تابع بدون خروجی. مثلا مرتب یه نوتیفیکیشن یا پیام به کاربر نشون میدی مبنی بر مثلا اتمام باتری لپ تاپ . خب نیاز نیست این تابع خروجی داشته باشه. چون یه اعلانه . (این توابع رو میشه در جاهایی که هی کد تکراری میزنید هم استفاده کرد)
می تونید مطلب زیر رو هم بخونید
https://fa.wikipedia.org/wiki/%D9%86%D9%88%D8%B9_void
ممنونم دوست عزیز بابت توضیح. اگر درست متوجه شده باشم یعنی هر تابعی که از شما ورودی میگیره و در نهایت روی اون ورودی محسابات یا کاری انجام میده و نتیجش رو بهتون نشون میده تابع با بازگشت هست ولی مثلا اگه یه تابع فقط نام و نام خانودگی رو بگیر و بعد اون رو توی یه تکست باکس نشون و بده و خوش آمد بگه ... این از نوع Void هست؟ مگه همین کار هم مثلا دریافت ورودی و نمایش خروجی نیست؟

رامین مرادی
یک شنبه 13 اسفند 1396, 09:07 صبح
نه ببینید بایدی در کار نیست تابعی که وردی میگیره باید خروجی داشته باشه. یا اینکه تابعی که ورودی نداره حتما خروجی نداره.

یک مثال دیگه بزنم از بانک اطلاعاتی . شما وقتی میخوای داده های جدول رو بخونی یه سلکت میگیری ورودی سلکتت هم اسم جدول و نام فیلدها و شرط هاست. خب این سلکت میره بر اساس ورودی هات داده های جدول رو میخونه و به صورت خروجی برات برمیگردونه.
اما اینسرت چی؟ Insert اسم جدول و فیلدهات و مقادیرشون رو میگره و برات تو جدول (فقط)ذخیره میکنه. هیچ خروجی هم نداره. این یک مثال از تابع void بود.

Mahmoud Zaad
یک شنبه 13 اسفند 1396, 10:31 صبح
سلام
در تابع هایی که خروجی دارند شما باید مقدار خروجی را با توجه به نوع تعریف شده، در return قرار بدید. اما در توابع void خبری از return نیست. مثلا:
private void Felan()
{
//مثلا یکسری محاسبات و نمایش نتیجه در تکست باکس
}

حالا همین تابع را با خروجی استرینگ می نویسیم:

private string Felan()
{
//یکسری محاسبات
//قراردادن نتیجه در خروجی
return natije;
}

حالا نمایش در تکست باکس:
textBox1.Text=Felan();

Black Shadow
یک شنبه 13 اسفند 1396, 14:06 عصر
از هر دو نفر شما بزرگان که جواب دادید واقعا ممنونم. الان کاملا متوجه شدم که چی به چیه! خیلی خیلی ممنون