عضو کانال یوتیوب ما شوید.

آموزش سی شارپ – بررسی Propertyها

آموزش سی شارپ
آموزش سی شارپ

بررسی Propertyها در سی شارپ

در مباحث شی گرا یکی از مهم ترین بخش ها  Propertyها می باشند.

در این بخش از آموزش برنامه نویسی سی شارپ به بررسی Propertyها خواهیم پرداخت.

 

حتما قبل از بررسی بررسی Propertyها نوشته ی مطالب قبلی این دوره ی آموزشی را با هشتگ #دوره آموزشی_سی_شارپ در سایت ما را مطالعه کنید.

 

Propertiesها :

Property یکی دیگر از اعضای کلاس است.

برای این‌که با اساس کار Properties آشنا شوید به مثال ساده‌ی زیر توجه کنید:

 

class MyClass
{
   private int ID;
   public void SetID(int id)
   {
      if (id >= 0 && id <= 10)
      {
         ID = id;
      }
   }
   public int GetID()
   {
       return ID;
   }
}

// Using :
MyClass ob = new MyClass();
ob.SetID(5);
Console.WriteLine("ID: " + ob.GetID()); 
ob.SetID(20);
Console.WriteLine("ID: " + ob.GetID());
ob.SetID(9);
Console.WriteLine("ID: " + ob.GetID());

 

کاری که Property انجام می‌دهد : کنترل دسترسی و مقداردهی به فیلد می باشد.

Property مانند Indexer از get accessor و set accessor استفاده می‌کند تا مقداری را در یک متغیر set و یا مقداری را از آن get کند.

فرم کلی یک property به‌شکل زیر است:

 

type name
{
   get
   {
   }
   set
   {
   }
}

 

مثال :

 

class MyClass
{
   private int id;
   public int ID
   {
      get
      {
         return id;
      }
      set
      {
         id = value;
      }
   }
}

 

بررسی Auto-Implemented Properties :

می توان propertyهای خیلی ساده را تعریف کرد که دیگر نیازی به متغیر ندارند تا property روی آن‌ها مدیریت داشته باشد.

در عوض شما به کامپایلر اجازه می‌دهید که یک متغیر (underlying variable) برای این مورد به‌وجود آورد.

فرم کلی auto-implemented property به‌شکل زیر است:
type name { get; set; }

در این‌جا، type مشخص‌‌کننده‌ی نوع و name مشخص‌کننده‌ ی نام property است.

توجه کنید که get و set بدنه ندارند و مستقیماً بعد از آن‌ها semicolon قرار می‌گیرد.

این syntax به کامپایلر می‌فهماند که باید یک storage location (که به آن backing field هم گفته می‌شود) برای نگه‌داری مقدار مورد نظر بسازد.

این متغیر (backing field) دارای اسم نبوده و مستقیماً برای شما قابل دسترس نیست.

تنها می‌توانید از طریق property به آن دسترسی داشته باشید.

 

class Person
{
    public string Name { get; set; }
    public string Family { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
    public Person(string name, string family)
    {
        Name = name;
        Family = family;
    }
}

// Using :
Person a = new Person("Ian", "Somerhalder");
Console.WriteLine("Name: " + a.Name);
Console.WriteLine("Family: " + a.Family);
 
a.Age = 26;
a.Gender = "Male";
 
Console.WriteLine("Age: " + a.Age);
Console.WriteLine("Gender: " + a.Gender);

 

همان‌طور که می‌بینید، به‌جای تعریف متغیر مستقیماً property تعریف کرده‌ایم.

از آن‌جا که propertyهای تعریف شده public بوده و دارای getter و setter هستند، می‌توانید مقادیر را get و set کنید.

بر خلاف propertyهای معمولی ، auto-implemented properties نمی‌توانند read-only یا write-only باشند و همیشه get و set باید تعریف شوند.

با این‌که auto- implemented properties روش جالب و راحتی است.

تنها زمانی باید از آن استفاده کنید که نیازی به کنترل کردن backing field نداشته باشید.

به‌طور پیش‌فرض، دسترسی به get و set بر اساس دسترسی خود properties (یا indexer) است.

به‌عنوان مثال اگر property را به‌صورت public تعریف کنید، get و set نیز public هستند.

با این حال می‌توانید برای get و set دسترسی جداگانه (مثلاً private) در نظر بگیرید.

به مثال زیر توجه کنید:

 

class Properties
{
   public int ID { get; private set; }
   public Properties()
   {
       ID = 180;
   }
}

// Using :
Properties ob = new Properties();
Console.WriteLine(ob.ID);
// ob.ID = 550; // Illegal!

 

در این مثال، ID در کلاس خودش هم می‌تواند get و هم می‌تواند set شود اما خارج از کلاس فقط قابل get شدن است.

همان‌طور که ذکر شد auto-implemented property نمی‌تواند read-only یا write-only باشد (نمی‌تواند فقط get یا set داشته باشد).

اما با در نظر گرفتن get یا set به‌صورت private می‌توانید دسترسی را محدود کنید.

 

Recursion چیست :

یک متد می‌تواند خودش را فراخوانی کند (درون خودش، خودش را صدا بزند)، به این پروسه recursion گفته می‌شود.

متدی که خودش را صدا زده، recursive است.

در مثال زیر محاسبه‌ی factorial را با روش recursive (بازگشتی) و nonrecursive (غیربازگشتی) می‌بینید:

 

class Factorial
{
   public int FactR(int n)
   {
      int result;
      if (n == 0) return 1;
      result = FactR(n - 1) * n;
      return result;
   }
}

// Using :
Factorial f = new Factorial();
Console.WriteLine("Factorials using recursive method.");
Console.WriteLine("Factorial of 3 is " + f.FactR(3));

 

نظرات خود را در ارتباط با “بررسی Propertyها در سی شارپ” برای ما بنویسید تا در تولید دوره های بعدی استفاده کنیم.

خب این جلسه هم به پایان رسید باید به این نکته توجه کنید که مباحث بالا در برنامه نویسی تجاری اهمیت فراوانی دارد.

برای استفاده از تمامی جلسات از هشتگ #دوره آموزشی_سی_شارپ در سایت ما استفاده کنید.

منتظر جلسه ی بعدی دوره آموزشی سی شارپ باشید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 1]