hamideh smi

راهنمایی در کد نوشته شده

با سلام . مشکل این کد در استفاده از توابع مجازی چیه؟؟ ( ممنون میشم راهنمایی کنید)
class Program
    {
        static void Main(string[] args)
        {
            circle c = new circle();
            c.calculate;
            Console.ReadKey();
        }
         
           class circle
        {
            public static void circle1()
            {
                int X;
                Console.WriteLine("please enter x:");
                X = int.Parse(Console.ReadLine());
            }
            public virtual void calculate(int x)
            {
                Console.WriteLine("area1 ={ 0}", 2 * 3.14 * x);
            }
            public override void calculate(int x)
            {
                Console.WriteLine("s ={ 0}", 3.14 * x*x);
            }
        }
    }  
این سوال 2 پاسخ دارد.
#سی_شارپ #تابع_مجازی #راهنمایی
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.
سلام به شما دوست عزیز.
مشکلاتی که کد شما داره اینه که اول شما داخل تابع main برای فراخوانی تابع فقط اسم تابع calculate رو نوشتید و ورودی و آرگومانش رو مشخص نکردید.
مشکل دومی که برنامه شما داره اینه که هم یک متد مجازی دارید و هم یه متد واقعی. توی یه کلاس شما حق این کار را ندارید و باید در یک کلاس شما یک متد را به صورت مجازی تعریف کنید و در کلاس فرزند آن را override کنید. من کد شما رو به شکل زیر تغییر دادم
public class CircleAbstract
        {
            public virtual void calculate(int x)
            {
                Console.WriteLine("area1 ={ 0}", 2 * 3.14 * x);
            }
        }
        class circle:CircleAbstract
        {
            public static void circle1()
            {
                int X;
                Console.WriteLine("please enter x:");
                X = int.Parse(Console.ReadLine());
            }
           
            public override void calculate(int x)
            {
                Console.WriteLine("s ={ 0}", 3.14 * x * x);
            }
        }
        static void Main(string[] args)
        {
            circle c = new circle();
            c.calculate(6);
            Console.ReadKey();
}
سرنوشت ما با افکارمان تغییر می کند؛ اگر افکارمان همیشه مطابق با خواسته هایمان باشند، همان چیزی می شویم که آرزو داریم و همان کاری را می کنیم که می خواهیم
  • انتخاب شده به عنوان جواب توسط 1 نفر
hamideh smi
بعد یک سوال دیگه اینکه الان در این کد شما برای x عدد 6 رو در نظر گرفتید درصورتی که من میخواستم کد یجوری باشه که از کاربر عدد رو بگیره و ذخیره کنه که در یک قسمت از کد هم اینو نوشتم در این صورت x هر عددی میتونه باشه. ولی الان x 6 هست. میشه درباره ی این هم توضیح بدید؟؟ممنون
توماس ادیسون: «۱٪ موفقیت انگیزه و ۹۹٪ آن سخت تلاش کردن است.»
قسمت main را به شکل زیر تغییر بدید
  circle c = new circle();
          
  int num;
Console.WriteLine("Enter a number");
            num = int.Parse(Console.ReadLine());
            c.calculate(num);
            Console.ReadKey();
سرنوشت ما با افکارمان تغییر می کند؛ اگر افکارمان همیشه مطابق با خواسته هایمان باشند، همان چیزی می شویم که آرزو داریم و همان کاری را می کنیم که می خواهیم
  • انتخاب شده به عنوان جواب توسط 1 نفر
پاسخ شما
برای ارسال پاسخ خود وارد شوید.
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره بهاره می تونی امروز ارزونتر از فردا خرید کنی ....