ارور در هنگام استفاده از Object Method - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ارور در هنگام استفاده از Object Method

0 امتیاز

سلام،

من برنامه زیر رو نوشتم که در اون یک کلاس تعریف شده، یک سازنده و در نهایت قصد دارم توسط یک Object method یک پیغام رو چاپ کنم که مشکلی که دارم مربوط به نوع بازگشتی Object metod است و ارور هم           Can not convert from void to object

 

 

سوال شده مرداد 16, 1399  بوسیله ی golden.light (امتیاز 43)   6 7 10

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام.دوست عزیز علت این خطا این هست که شما تابع priceCat رو داخل Console.Write بکار بردید که فقط می تونه آبجکت ها رو چاپ کنه ، در حالی که نوع بازگشتی تابع void هست.دو تا راه حل ساده داره که هر کدوم رو خواستید ، می تونید انجام بدید:

1- فراخوانی های تابع priceCat رو بیارید بیرون از Console.Write به این شکل :

Console.Write("PRICE CATEGORY --> \n");
car1.priceCat();

2- نوع تابع priceCat رو به string تغییر بدید و داخل if ها به جای Console.Write فقط رشته رو return کنید.به این شکل :

return "EXPENSIVE CAR";

و آخر تابع هم یه رشته خالی(یا یه پیغام مناسب) return کنید.

توی این حالت دیگه نیازی نیست فراخوانی های priceCat رو از Console.Write بیرون بیارید.

 

پ.ن :  شرط if اول توی تابع ، باید اصلاح بشه به price >= 50000

پاسخ داده شده مرداد 16, 1399 بوسیله ی ik (امتیاز 571)   1 2 8
انتخاب شد مرداد 17, 1399 بوسیله ی golden.light
خیلی ممنونم از راهنمایی شما. از روش دوم استفاده کردم و نوع تابع رو به String تغییر دادم مشکل حل شد. فقط سوالی که داشتم این هست که آخرین Return که فرمودید یک رشته خالی یا پیغام مناسب رو چاب کنه چه نقشی داره؟ چون چک کردم بدون اون Return آخر برنامه ارور میده. ممنونم از راهنمایی های ارزشمند شما.
خواهش می کنم.در مورد return ، همونطور که می دونید وقتی برای تابع ، یک نوع تعیین می کنید(از هر آبجکتی) کامپایلر انتظار return کردن یک مقدار از نوع همون آبجکت رو داره.اما نکته اینجاست که وقتی داخل کد تابع ،همه return ها داخل if ها باشند ، از نظر کامپایلر این احتمال وجود داره که برنامه توی هیچ کدوم از اون if ها نیفته و هیچ چیز return نشه.در واقع کامپایلر فقط حالتی رو می پذیره که صد در صد ، مقداری return بشه.به همین دلیل شما باید آخر تابع یه return بگذارید.البته اگر از if else استفاده کنید و داخل هر دو ، return داشته باشید(در جای درست) ، خطا نخواهد داد چون به طور حتم یا if اجرا خواهد شد یا else
...