PDA

View Full Version : سوال: محدودیت در برگرداندن یک مقدار توسط توابع



ali_autumnal
پنج شنبه 19 آذر 1388, 13:22 عصر
باسلام

یه مشکلی برخوردم اگه امکانش هست دوستان پاسخ بدن.

من تو یه کلاس چند تا تابع معرفی کردم. همه این توابع مقدارهایی رو برمیگردونند. مثلا چندتاش boolean و چندتا int و یکی رشته بر میگردونه.

مشکل اینجاست که: الان میخوام تابع دیگه ای تعریف کنم که باز مثلا boolean یا هر نوع دیگه ای برگردونه. ایراد میگیره نمبزاره مقدار برگردونم. میگه:



Error 1 'AutumnalCalendar.ClassDataBase.SaveMyPassword(str ing, string, string, string)': not all code paths return a value H:\application\Calendar\AutumnalCalendar\AutumnalC alendar\ClassDataBase.cs 172 24 AutumnalCalendar



اما وقتی همین تابع رو از نوع void تعریف میکنم قبول میکنه.

البته این مشکل مختص کلاس ها نیست بلکه تو فرم ها هم این محدودیت هست.

چطور این محدودیت برگردوندن توابع رو حذف کنم؟ آیا راه حلی واسه این هست؟

متشکرم.

mahdi87_gh
پنج شنبه 19 آذر 1388, 14:18 عصر
وقتی که یه نوع برگشتی برای تابع تعریف می کنید باید همه مسیرهای اجرایی ممکن در تابعتون یه مقدار رو برگردونه. بنظرم میرسه که در تابع شما از ساختارهای کنترل(مثل if,switch,...) استفاده کردید که یه مسیرش هیچی برنمیگردونه.
بنظرم برای اینکه با این مشکل برخورد نکنید، یه متغیر از نوع برگشتی تعربف کنید و توی ساختارهاتون مقدار اون رو تغییر بدید و در آخر در خارج از شاختار تصمیمگیریتون دستور return رو قرار بدید
موفق باشید

ali_autumnal
پنج شنبه 19 آذر 1388, 17:38 عصر
وقتی که یه نوع برگشتی برای تابع تعریف می کنید باید همه مسیرهای اجرایی ممکن در تابعتون یه مقدار رو برگردونه. بنظرم میرسه که در تابع شما از ساختارهای کنترل(مثل if,switch,...) استفاده کردید که یه مسیرش هیچی برنمیگردونه.
بنظرم برای اینکه با این مشکل برخورد نکنید، یه متغیر از نوع برگشتی تعربف کنید و توی ساختارهاتون مقدار اون رو تغییر بدید و در آخر در خارج از شاختار تصمیمگیریتون دستور return رو قرار بدید
موفق باشید


برعکس، این کلاسی که من نوشتم هیچ گونه if و switch ای توش استفاده نشده. یه کلاس که کارش فقط insert, update,delete,search هست و توی همه try cash ها هم return نوشتم.

اَرژنگ
پنج شنبه 19 آذر 1388, 17:50 عصر
برعکس، این کلاسی که من نوشتم هیچ گونه if و switch ای توش استفاده نشده. یه کلاس که کارش فقط insert, update,delete,search هست و توی همه try cash ها هم return نوشتم.

جوابی که داده شد درست بود، چیزی که گفتند try catch را هم در بر میگیرد.
۲ تا نقطه :
۱.کلاس جایی برایه ریختن متدها نیست، کلاس برایه جمع کردن مفاهیم منطقی یک شئی در یکجاست.
۲.به جایه اینکه در مورد کدی که مشکل دارد حرف بزنیم، خود کد را که اشکال دارد بزارید مشکلش را مشخص برایتان میگن.