מילת המפתח 'this'
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 4 מתוך 70.
מילת המפתח this מתייחסת למופע הנוכחי של מחלקה. משתמשים בה כדי לגשת לחברי המופע ולהבחין בין פרמטרים לשדות בעלי אותו שם.
השתמשו ב־this כדי להבחין בין שדות לפרמטרים
public class Person
{
private string name;
private int age;
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
}בלי this, הפרמטר היה מסתיר את השדה
// זה לא יעבוד כמצופה
public Person(string name, int age)
{
name = name; // מקצה את הפרמטר לעצמו!
age = age; // מקצה את הפרמטר לעצמו!
}השתמשו ב־this עם מאפיינים
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public Product(string name, decimal price)
{
this.Name = name;
this.Price = price;
}
public void DisplayInfo()
{
Console.WriteLine($"{this.Name}: ${this.Price}");
}
}השתמש ב־this כדי לקרוא לבנאי אחר באותה מחלקה
public class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public Rectangle(int width, int height)
{
this.Width = width;
this.Height = height;
}
// בנאי לריבועים
public Rectangle(int size) : this(size, size)
{
}
}דוגמה לשימוש:
Rectangle rect = new Rectangle(5, 10);
Rectangle square = new Rectangle(5); // יוצר 5x5מילת המפתח this תמיד מתייחסת למופע האובייקט הנוכחי. היא שימושית במיוחד כששמות הפרמטרים זהים לשמות השדות או המאפיינים, וכך הקוד שלך ברור יותר ונמנעות שגיאות.
אתגר
בינוניהשלם את המחלקה Product על ידי הוספת בנאי שמשתמש במילת המפתח this כדי להקצות את ערכי הפרמטרים למאפיינים. בנוסף, ממש את המתודה GetDescription() באמצעות this כדי לגשת למאפיינים.
המתודה GetDescription() צריכה להחזיר: "{Name} costs ${Price}"
נסו בעצמכם
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal price = decimal.Parse(Console.ReadLine());
Product product = new Product(name, price);
Console.WriteLine($"Product: {product.Name}");
Console.WriteLine($"Price: ${product.Price}");
Console.WriteLine(product.GetDescription());
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמרחבי שמות והנחיותמבוא למחלקות ולאובייקטיםמילת המפתח 'this'מתודות ופרמטריםשדות לעומת מאפייניםבנאיםאתחול אובייקטיםסיכום – מחשבון פשוט4ירושה
תחביר ירושה בסיסית (:)מילת המפתח 'base'מילות המפתח Virtual ו-Overrideמחלקות Sealedמחלקת הבסיס 'object'סיכום – היררכיית עובדים7תכונות מתקדמות
העמסת אופרטוריםאינדקסרים (this[])דריסת ToString()מתודות הרחבהסיכום – רשימה מותאמת אישית2מאפיינים וחברים סטטיים
מאפיינים במימוש אוטומטימאפיינים לקריאה בלבד ולכתיבה בלבדשדות ומתודות סטטייםמחלקות סטטיותחברים עם גוף ביטוי5פולימורפיזם וממשקים
פולימורפיזם בזמן קומפילציה לעומת בזמן ריצהממשק לעומת מחלקה מופשטתממשקים מרוביםממשקים מפורשיםהמרה כלפי מעלה והמרה כלפי מטהחזרה: מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה במקום ירושהGenerics (מחלקות ומתודות)נציגים ואירועיםמאפיינים ורפלקציהIDisposable והצהרת usingיסודות הזרקת תלויותתרגלו בעצמכם: קומפיילר C# אונליין