Modificadores de acceso (especificadores) en C# con ejemplos de programas

โšก Resumen inteligente

En C#, los modificadores de acceso son palabras clave que definen la visibilidad de una clase, propiedad o mรฉtodo, restringiendo quรฉ programas externos pueden acceder a ellos. Los constructores inicializan automรกticamente los valores de los campos cada vez que se crea un objeto de la clase.

  • ๐Ÿ” Privado: El modificador de acceso privado limita el acceso de un miembro a la misma clase, bloqueando el acceso desde cualquier programa externo.
  • ๐ŸŒ Pรบblico: El modificador de acceso pรบblico expone una propiedad o mรฉtodo a cualquier programa externo sin restricciones.
  • ๐Ÿ›ก๏ธ Protegido: El modificador de acceso protegido comparte miembros รบnicamente con las clases que heredan de la clase actual.
  • ๐Ÿ“ฆ Interna: El modificador de acceso interno permite el acceso dentro del mismo ensamblado, pero no desde un programa externo.
  • ???? ๏ธ Constructores: Un constructor comparte el nombre de la clase, no acepta ningรบn tipo de retorno e inicializa los campos cuando se crea un objeto.
  • ๐Ÿค– Asistencia de IA: GitHub Copilot genera modificadores y constructores, mientras que ML.NET asigna las propiedades de la clase a las caracterรญsticas del modelo.

Modificadores de acceso (especificadores) en C#

ยฟQuรฉ es el modificador de acceso (especificador) en C#?

Modificadores de acceso Los modificadores de acceso en C# son palabras clave que definen la visibilidad de las propiedades o mรฉtodos de una clase. Se utilizan cuando no se desea que otros programas vean las propiedades o mรฉtodos de una clase. Los modificadores de acceso restringen el acceso para que otros programas no puedan ver las propiedades o mรฉtodos de una clase.

Hay 6 tipos de modificadores de acceso en C#:

  • Privado
  • Pรบblico
  • Robusto
  • Interno
  • Interno protegido
  • Privado Protegido

Aprenderemos sobre los principales modificadores de acceso en C# con ejemplos de programas como se explica a continuaciรณn.

Modificadores de acceso privado en C#

Cuando el modificador de acceso privado se adjunta a una propiedad o a un mรฉtodo, significa que no se puede acceder a esos miembros desde ningรบn programa externo.

Ejemplo de modificador de acceso privado

Tomemos un ejemplo y veamos quรฉ sucede cuando usamos el modificador de acceso privado.

Modifiquemos el cรณdigo actual en nuestro archivo Tutorial.cs. En el mรฉtodo SetTutorial, cambiemos la palabra clave pรบblica a privada.

Modificadores de acceso privado

Ahora pasemos a nuestro archivo Program.cs. Notarรกs que hay una lรญnea ondulada roja debajo del mรฉtodo SetTutorial.

Como hemos declarado el mรฉtodo SetTutorial como privado en nuestra clase Tutorial, Visual Studio lo ha detectado y le ha indicado al usuario, resaltรกndolo, que ahora este mรฉtodo no funcionarรก desde el archivo Program.cs.

Modificador de acceso privado

Modificadores de acceso pรบblico de C#

Cuando el modificador de acceso pรบblico se adjunta a una propiedad o a un mรฉtodo, significa que se puede acceder a esos miembros desde cualquier programa externo. Ya hemos visto esto en nuestros ejemplos anteriores.

Ejemplo de modificador de acceso pรบblico

Modificadores de acceso pรบblico de C#

Como hemos definido nuestros mรฉtodos como pรบblicos en la clase Tutorial, se puede acceder a ellos desde el archivo Program.cs.

Modificadores de acceso protegido en C#

Cuando el modificador de acceso protegido se adjunta a una propiedad o a un mรฉtodo, significa que solo se puede acceder a esos miembros mediante clases heredadas de la corriente clase. Esto se explicarรก con mรกs detalle en la clase Herencia.

Modificadores de acceso interno de C#

Cuando se adjunta un modificador de acceso interno a una propiedad o a un mรฉtodo, solo un programa interno puede acceder a esos miembros, pero no un programa externo.

Constructor de C #

C# Los constructores estรกn acostumbrados a inicializar los valores de los campos de clase cuando se crean sus objetos correspondientes. Un constructor es un mรฉtodo que tiene el mismo nombre que el de la clase. Si se define un constructor en una clase, proporcionarรก el primer mรฉtodo que se llama cuando se crea un objeto. Supongamos que tuviรฉramos una clase llamada Empleado. El mรฉtodo constructor tambiรฉn se denominarรญa Empleado().

Es necesario tener en cuenta los siguientes aspectos clave sobre los mรฉtodos constructores

  1. El modificador de acceso predeterminado de C# para el constructor debe hacerse pรบblico.
  2. No deberรญa haber ningรบn tipo de retorno para el mรฉtodo constructor.

Ejemplo de constructor C#

Veamos ahora cรณmo podemos incorporar el usuario de constructores en nuestro cรณdigo. Usaremos constructores para inicializar los campos TutorialID y TutorialName con algunos valores predeterminados cuando se crea el objeto.

Paso 1) El primer paso es crear el constructor de nuestra clase Tutorial. En este paso, agregamos el siguiente cรณdigo al archivo Tutorial.cs.

Constructor de C #

Code Explicaciรณn:-

  1. Primero agregamos un nuevo mรฉtodo que tiene el mismo nombre que el de la clase. Debido a que tiene el mismo nombre que la clase, C# lo trata como un mรฉtodo constructor. Entonces, ahora, cada vez que el mรฉtodo de llamada crea un objeto de esta clase, este mรฉtodo se llamarรก de forma predeterminada.
  2. En el constructor del Tutorial, establecemos el valor de TutorialID en 0 y TutorialName en "Predeterminado". Entonces, cada vez que se crea un objeto, estos campos siempre tendrรกn estos valores predeterminados.

Ahora pasemos a nuestro archivo Program.cs y simplemente eliminemos la lรญnea que llama al mรฉtodo SetTutorial. Esto se debe a que sรณlo queremos ver cรณmo funciona el constructor.

Constructor de C #

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  public int TutorialID; 
  public string TutorialName;
  
  public Tutorial()
  {
   TutorialID=0;
   TutorialName="Default";
  }
  public void SetTutorial(int pID,string pName) 
  {
   TutorialID=pID;
   TutorialName=pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  
  static void Main(string[] args) 
  {
   Tutorial pTutor=new Tutorial();
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

Code Explicaciรณn:-

  1. El primer paso es crear un objeto para la clase Tutorial. Esto se hace mediante la palabra clave "nueva".
  2. Usamos el mรฉtodo GetTutorial de la clase Tutorial para obtener el TutorialName. Luego, esto se muestra en la consola a travรฉs del mรฉtodo Console.WriteLine.

Si el cรณdigo anterior se ingresa correctamente y se ejecuta el programa, se mostrarรก el siguiente resultado.

Salida:

Constructor de C #

En el resultado, podemos ver que efectivamente se llamรณ al constructor y que el valor de TutorialName se estableciรณ en "Predeterminado".

Nota: Aquรญ el valor "predeterminado" se obtiene del constructor.

Preguntas Frecuentes

Si no se especifica ningรบn modificador, los miembros de clase y estructura se establecen por defecto como privados y los tipos de nivel superior como internos, permaneciendo ocultos hasta que se amplรญe su visibilidad.

Protected expone un miembro a la misma clase y a cualquier clase derivada, incluso entre diferentes ensamblados. Internal lo expone solo a los tipos del mismo ensamblado.

El modo interno protegido permite el acceso desde el mismo ensamblado o cualquier clase derivada. El modo privado protegido es mรกs estricto y solo permite el acceso a clases derivadas dentro del mismo ensamblado.

C# admite constructores predeterminados, parametrizados, de copia, estรกticos y privados. Estos inicializan los campos de un objeto, ejecutan la configuraciรณn de la clase una sola vez o clonan los valores de otro objeto.

Un constructor estรกtico no requiere modificadores ni parรกmetros. Se ejecuta una sola vez, antes de que se cree el primer objeto o se carguen los miembros estรกticos, inicializando los campos estรกticos.

Sรญ. Una clase puede definir varios constructores con diferentes listas de parรกmetros. El compilador elige el que coincida con los argumentos pasados โ€‹โ€‹a new.

Sรญ. GitHub Copilot sugiere modificadores, constructores e inicializadores de campo a partir del nombre de una clase o un comentario dentro de Visual Studio y VS Code. RevVea cada nivel de visibilidad sugerido.

ML.NET asigna las propiedades pรบblicas de una clase de datos de C# a las caracterรญsticas y etiquetas del modelo. Los mรฉtodos get y set pรบblicos permiten leer esos valores durante el entrenamiento.

Resumir este post con: