C# | Propiedades – Part 2

Antes de pasar a las propiedades, echemos un vistazo a por qué el concepto de propiedades entró en C#. El es debido a dos razones:
 

  • Si los miembros de una clase son privados, entonces cómo otra clase en C# podrá leer, escribir o calcular el valor de ese campo.
  • Si los miembros de la clase son públicos, otra clase puede hacer un mal uso de ese miembro.

Ejemplo:
 

C#

// C# program to illustrate the problems
// with public and private members
using System;
 
// public class
public class C1
{
     
    // public data members
    public int rn;
    public string name;
     
    // private field
    // private int marks = 35;
 
}
 
// another public class
public class C2
{
     
// Main Method
public static void Main(string[] args)
{
     
    // Creating object of C1 class
    C1 obj = new C1();
     
    // setting values to public
    // data members of class C1
    obj.rn = 10000;
    obj.name = null;
     
    // setting values to private
    // data members of class C1
    // obj.mark = 0;
     
    // display result
    Console.WriteLine("Name:  {0} \nRoll No: {1}", obj.name, obj.rn);
     
}
}

Producción: 
 

Name:   
Roll No: 10000

Explicación: En lo anterior, puede ver que la clase C2 puede acceder a los miembros públicos de la clase C1 y, al usar el objeto «obj» de C1, puede proporcionar los valores a los miembros, como el nombre recibe un valor nulo, pero no queremos que esto suceda. ser nulo C2 no puede proporcionar el valor a las «marcas» del miembro porque es privado en C1. Para probar el acceso de miembros privados, elimine los comentarios e intente ejecutar y podrá ver que el compilador dará un error. Los lenguajes de programación que no tienen propiedades, utilizan métodos getter y setter para proporcionar dicho mecanismo de acceso.
 

Uso de propiedades

Las propiedades son el tipo especial de miembros de clase que proporciona un mecanismo flexible para leer, escribir o calcular el valor de un campo privado. Las propiedades se pueden usar como si fueran miembros de datos públicos, pero en realidad son métodos especiales llamados accesores . Esto permite acceder fácilmente a los datos y ayuda a promover la flexibilidad y la seguridad de los métodos. La encapsulación y el ocultamiento de información también se pueden lograr usando propiedades. Utiliza métodos predefinidos que son métodos de «obtener» y «establecer» que ayudan a acceder y modificar las propiedades.
Accesores: El bloque de «establecer» y «obtener» se conoce como «Accesorios». Es muy esencial para restringir la accesibilidad de la propiedad. Hay dos tipos de descriptores de acceso, es decir, obtener descriptores de acceso y establecer descriptores de acceso. Hay diferentes tipos de propiedades basadas en los accesores «get» y «set»:
 

  • Propiedades de lectura y escritura: cuando la propiedad contiene métodos get y set.
  • Propiedades de solo lectura: cuando la propiedad contiene solo el método get.
  • Propiedades de solo escritura: cuando la propiedad contiene solo el método establecido.
  • Propiedades implementadas automáticamente: cuando no hay lógica adicional en los accesores de propiedad y se introduce en C# 3.0.

La sintaxis para definir propiedades:
 

<access_modifier> <return_type> <property_name>
{
        get { // body }
        set { // body }
}

Donde, <modificador_de_acceso> puede ser público, privado, protegido o interno. <return_type> puede ser cualquier tipo de C# válido. <property_name> puede ser definido por el usuario. Las propiedades pueden ser diferentes modificadores de acceso como público, privado, protegido, interno. Los modificadores de acceso definen cómo los usuarios de la clase pueden acceder a la propiedad. Los descriptores de acceso get y set para la misma propiedad pueden tener distintos modificadores de acceso. Una propiedad se puede declarar como propiedad estática mediante la palabra clave estática o se puede marcar como propiedad virtual mediante la palabra clave virtual. 
 

  • Get Accessor: Especifica que el valor de un campo se puede acceder públicamente. Devuelve un único valor y especifica la propiedad de solo lectura .
    Ejemplo:
     
class Geeks {
// Declare roll_no field
private int roll_no;

// Declare roll_no property
public int Roll_no 
{ 

   get 
     {
      return roll_no;
     }

}
}
  • Set Accessor: Especificará la asignación de un valor a un campo privado en una propiedad. Devuelve un único valor y especifica la propiedad de solo escritura
    Ejemplo:
     
class Geeks {

// Declare roll_no field
private int roll_no;

// Declare roll_no property
public int Roll_no
 { 

   get 
     {
         return roll_no;
      }

   set 
     {
         roll_no = value;
      }
}
}

Accesibilidad de Accesorio 
 

  • no podemos usar modificadores de acceso en una interfaz o una implementación de miembro de interfaz explícita.
  • podemos usar modificadores de acceso solo si la propiedad tiene acceso tanto set como get.
  • Si la propiedad es un modificador de reemplazo, el modificador de acceso debe coincidir con el acceso del acceso reemplazado.
  • El nivel de accesibilidad del usuario debe ser más restrictivo que el nivel de accesibilidad de la propiedad.

A continuación se muestran los programas para demostrar diferentes tipos de propiedades:
Programa 1: para demostrar la propiedad de solo lectura usando el accesor «get».
 

C#

// C# program to illustrate the
// read-only property
using System;
 
public class Student {
 
    // Declare counter field as cnt
    private static int cnt;
  
    // to define constructor
    public Student()
    {
 
        // increment the counter
        // using constructor
        cnt++;
    }
  
    // Declare counter property
    public static int Counter
    {
 
        // read-only property
        get
        {
            return cnt;
        }
    }
}
 
class StudentTest {
 
    // Main Method
    public static void Main(string[] args)
    {
 
        // create three instances of
        // Student class it call constructor
        // three times which increase the counter
        Student s1 = new Student();
        Student s2 = new Student();
        Student s3 = new Student();
  
        // s1.Counter = 10;
        // Compile Time Error: Can't set value of
        // Counter because it is read only.
  
        Console.WriteLine("Total No of Student: " + Student.Counter);
  
        // Program Give Warning
        // The variable `s1' is assigned but its value is never used
    }
}

Producción: 
 

Total No of Student: 3

Programa 2: Para demostrar la propiedad de lectura y escritura utilizando los accesores «get» y «set».
 

C#

// C# program to illustrate the
// read and write property
using System;
 
public class Student {
 
    // Declare name field
    private string name = "GeeksforGeeks";
  
    // Declare name property
    public string Name
    {
 
       get
        {
            return name;
        }
 
        set
        {
            name = value;
        }
    }
}
 
class TestStudent {
 
    // Main Method
    public static void Main(string[] args)
    {
        Student s = new Student();
  
        // calls set accessor of the property Name,
        // and pass "GFG" as value of the
        // standard field 'value'.
        s.Name = "GFG";
  
        // displays GFG, Calls the get accessor
        // of the property Name.
        Console.WriteLine("Name: " + s.Name);
    }
}

Producción: 
 

Name: GFG

Publicación traducida automáticamente

Artículo escrito por Mithun Kumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *