C# Properties

Introduction to C# Properties

C# में class member variables को fields कहा जाता है। जब आप कोई private field create करते है तो उसे 2 तरह से initialise कर सकते है। पहले तरीके में आप field create करते समय ही उसकी value भी assign कर सकते है।

दूसरे तरीके में आप public functions create कर सकते है जिनके द्वारा user द्वारा pass की गयी value को fields को assign और return करवाया जा सकता है। इन functions के द्वारा आप private fields को assign की जाने वाली value को control कर सकते है। इन्हें getter और setter functions भी कहा जाता है।

Private fields को manage करने के लिए functions को use करके आप encapsulation implement कर पाते है। क्योंकि आप private field को hide कर लेते है और user को functions provide करते है जिनके द्वारा private fields के साथ interact किया जा सकता है।

इन functions में आप validation code implement कर सकते है ताकि जब भी कोई user private field को inappropriate value assign करें तो उसे discard कर दिया जाए। आप user द्वारा assign की जाने वाली value को अपने according control (manipulate) भी कर सकते है।

Private fields को manage करने के लिए functions को use करना best approach है। क्योंकि अधिकतर private fields के लिए value user से input करवाई जाती है और functions को use करना secure भी है। लेकिन इस approach के कुछ drawbacks है।

यदि आप बहुत सारे private fields अपने program में use कर रहे है तो उन सबके लिए आपको functions implement करने होंगे। Functions implement करने की वजह से program बहुत lengthy हो जाता है और run time भी बढ़ जाता है।

इन drawbacks को देखते हुए C# में properties को introduce किया गया है। एक Property field और function का combination होती है। अब तक आप private field create करके उनके लिए functions define करते थे। लेकिन अब आपको private field create करके उनके लिए properties define करनी होगी।

Properties में accessors (get & set) define किये जाते है जो getter और setter functions की तरह कार्य करते है। Accessors के द्वारा आप private fields को assign की जाने वाली values को control करते है।

Properties को उसी प्रकार access किया जाता है जिस प्रकार आप किसी normal field को access करते है। Properties में arguments नहीं pass किये जा सकते है। लेकिन आप user द्वारा input की जाने वाली values को उसी प्रकार control कर सकते है जैसे की आप functions में करते है।

Functions की तुलना में properties को handle करना बहुत आसान होता है। इसके अलावा properites से run time भी नहीं बढ़ता है क्योंकि functions के call होने से लेकर value return करने तक का time reduce हो जाता है।

Properties 2 प्रकार की होती है।

  1. read-only - इस प्रकार की properties द्वारा values को सिर्फ access किया जा सकता है। इस तरह की properties द्वारा आप value set नहीं कर सकते है।
  2. read/write - इस प्रकार की properties के द्वारा आप value को assign भी कर सकते और value access भी कर सकते है। इन properties की value को read नहीं किया जा सकता है।

C# में private fields के साथ work करने के लिए properties एक standard way है।

Syntax of C# Properties

C# properties का general syntax निचे दिया जा रहा है।

private-access-modifier private-field-name;   //A private field

access-modifier data-type property-name. //Property for above private field
{
    get
    {
        return-keyword  private-field-name;
    }
    set
    {
        private-field-name = value-keyword;
    }
}

Property को किसी function की तरह define किया जाता है। लेकिन property की कोई argument list नहीं होती है। किसी भी property के get और set दो parts होते है।

Property के get part में private field की वह value होती है जो user द्वारा access की जाती है। Property के set part में private field को value assign करने का code होता है। User द्वारा input की जाने वाली value को value keyword द्वारा define किया जाता है।

Example of C# Properties

C# properties का simple उदाहरण निचे दिया जा रहा है।

using System;
class Writer
{
   private string position = "Technical Writer";
   private int salary = 2000;
   private string name;

   public string Position
   {
         get
         {
              return position;
         }
   }

   public int Salary
   {
         get
         {
               return salary;
         }
   }

   public string Name
   {
         get
         {
               return name;
         }

         set
         {
                 name=value;
          }
   }

}

class Administrator
{
    public static void Main(String[] args)
    {

        Writer w = new Writer();
        w.Name = "Best Hindi Tutorials";

        Console.WriteLine("Name : {0}",w.Name);
        Console.WriteLine("Position : {0}",w.Position);
        Console.WriteLine("Salary : {0}",w.Salary);
    }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Name : Best Hindi Tutorials
Position : Technical Writer
Salary : 2000