من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

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

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

آموزش سی شارپ – بررسی 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 باید تعریف شوند. با این‌که autoimplemented 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ها در سی شارپ” برای ما بنویسید تا در تولید دوره‌های بعدی استفاده کنیم. خب این جلسه هم به پایان رسید باید به این نکته توجه کنید که مباحث بالا در برنامه نویسی تجاری اهمیت فراوانی دارد.

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

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