niveles functions acceso c# .net visual-studio oop access-modifiers

functions - public c#



¿Métodos “protegidos” en C#? (6)

¿Cuáles son los beneficios de definir métodos como protected en C #?

me gusta :

protected void KeyDemo_KeyPress( object sender, KeyPressEventArgs e ) { // some code }

En comparación con algo como esto:

private void FormName_Click( object sender, EventArgs e ) { //some code }

He visto ejemplos de este tipo en muchos libros y no entiendo por qué y cuándo usan private frente a protected .


  1. Se puede acceder a los métodos protegidos heredando clases, mientras que los métodos privados no pueden acceder.
  2. Teniendo en cuenta que los archivos .aspx y .ascx heredan de su código detrás de las clases (default.aspx.cs), se puede acceder a los métodos protegidos desde .aspx / .ascx

Ten esto en cuenta también: si tienes un botón y OnClick de ese botón está configurado como Button_Click

<asp:Button id="btn" runat="server" OnClick="Button_Click" />

luego, el método Button_Click debe tener al menos una visibilidad protegida para poder acceder al botón.

Puede evitar esto agregando lo siguiente a su método Page_Load:

btn.Click += new EventHandler(Button_Click);


A menudo, "protegido" se utiliza cuando se desea que una clase secundaria anule un método "privado".

public class Base { public void Api() { InternalUtilityMethod(); } protected virtual void InternalUtilityMethod() { Console.WriteLine("do Base work"); } } public class Derived : Base { protected override void InternalUtilityMethod() { Console.WriteLine("do Derived work"); } }

Por lo tanto, tenemos el comportamiento de anulación que conocemos y amamos por herencia, sin exponer innecesariamente el Método de Utilidad Interna a nadie fuera de nuestras clases.

var b = new Base(); b.Api(); // returns "do Base work" var d = new Derived(); d.Api(); // returns "do Derived work"


Algunos aspectos de .NET, como ASP.NET, crean subclases de su clase de código subyacente en tiempo de ejecución. Por lo tanto, una clase de página ASP.NET, por ejemplo, hereda de su clase de código de código. Al proteger el método, la clase de página generada dinámicamente puede conectar fácilmente un evento de clic de botón a un método protegido en la clase base que lo maneja.


Los métodos protegidos son como los métodos privados. Sólo los miembros de la clase podían acceder a ellos. La única diferencia es que, a diferencia de los miembros privados, las clases derivadas también pueden acceder a los miembros protegidos.


Si tiene un formulario heredado (o cualquier clase), podría invocar esta función desde la subclase.


Los métodos protegidos pueden ser llamados desde clases derivadas. Los métodos privados no pueden.

Esa es la única diferencia entre los métodos privados y protegidos.