שאלה בנושא Sealed Class בc#

saar85

New member
שאלה בנושא Sealed Class בc#

שלום. יש לי את ההוראה הבאה: אני צריך לממש מטודה שנקראת ()GetArea מבלי לשנות את הclass עצמו. זה הclass:
קוד:
   public sealed class Circle
    {
        public Circle(double r)
        {
            radius = r;
        }

        private double radius;

        public double Calculate(Func<double, double> op)
        {
            return op(radius);
        }
    }
קוד המימוש צריך להיראות כך:
קוד:
Circle c = new Circle(10);
Double area = c.GetArea()
איך אני מממש את המטודה מבלי לשנות את הclass?
 
תשובה והערה קטנה

ב-C# יש אפשרות "להוסיף" לקלאס פונקציות מבחוץ. תחפשי בגוגל: extended method
הערה קטנה: צריך לומר מתודה ולא מטודה. בגדול הכלל הוא שאם באנגלית רשות th אז מתרגמים ל-ת' ואם רשום t מתרגמים ל-ט'.
&nbsp
 


 

nocgod

New member
לא קשור לשאלה ישירות אבל יש עוד דרך לחשב את השטח

באמצעות העברת lambda expression שיקבל את הרדיוס ויחשב את השטח למתודה Calculate
 

BravoMan

Active member
דווקא קשור ישירות:

היות ואין getter ל-radius ו-extention method לא יכול לגעת באיברים פרטיים של המחלקה, מה שהצעת הוא הדרך היחידה לבצע את החישוב בפועל.
 

nocgod

New member
אתה צודק, הוא צריך לכתוב ext method שישתמש בפנים ב calculate

 

saar85

New member
תודה לכל העוזרים

האמת שאלתיבשביל חבר שהיה לו מבחן קבלה למקום עבודה ואין לו משתמש פה אז ביקש ממני לשאול.. הוא כבר הסתדר... תודה.
 

nocgod

New member
קצת מוזר שהוא מתראיין ולא מכיר מכניקה בסיסית של שפה לא?

 
למעלה