inside - c# pass parameters to base constructor
¿Cuál es realmente el propósito de la palabra clave "base" en c#? (8)
Por lo tanto, para la clase base utilizada para algunos métodos reutilizables comunes en cada página de mi aplicación ...
public class BaseClass:System.Web.UI.Page
{
public string GetRandomPasswordUsingGUID(int length)
{
string guidResult = System.Guid.NewGuid().ToString();
guidResult = guidResult.Replace("-", string.Empty);
return guidResult.Substring(0, length);
}
}
Así que si quiero usar este método solo lo haría,
public partial class forms_age_group : BaseClass
{
protected void Page_Load(object sender, EventArgs e)
{
//i would just call it like this
string pass = GetRandomPasswordUsingGUID(10);
}
}
Hace lo que quiero pero hay una palabra clave "Base" que trata con la clase base en c # ... Realmente quiero saber cuándo debo usar la palabra clave base en mi clase derivada ...
Cualquier buen ejemplo ...
El propósito real de la palabra clave "base" en c # es el siguiente: suponga que desea llamar solo al constructor parametrizado de la clase padre. Entonces, puede usar la base y pasar los parámetros. Consulte el siguiente ejemplo ...
Ejemplo -
class Clsparent
{
public Clsparent()
{
Console.WriteLine("This is Clsparent class constructor");
}
public Clsparent(int a, int b)
{
Console.WriteLine("a value is=" + a + " , b value is=" + b);
}
}
class Clschild : Clsparent
{
public Clschild() : base(3, 4)
{
Console.WriteLine("This is Clschild class constructor");
}
}
class Program
{
static void Main(string[] args)
{
Clschild objclschild = new Clschild();
Console.Read();
}
}
En general, estamos usando la clase base para reutilizar la propiedad o los métodos en la clase secundaria de la clase base, por lo que no necesitamos repetir la misma propiedad y los métodos nuevamente en la clase secundaria.
Ahora, usamos la palabra clave base para llamar directamente a un constructor o método desde la clase base.
Ejemplo
public override void ParentMethod()
{
base.ParentMethod(); //call the parent method
//Next code.
}
2) Ejemplo
class child: parent
{
public child() : base(3, 4) //if you have parameterised constructor in base class
{
}
}
La base se usa cuando reemplaza un método en una clase derivada pero solo desea agregar funcionalidad adicional a la funcionalidad original
Por ejemplo:
// Calling the Area base method:
public override void Foo()
{
base.Foo(); //Executes the code in the base class
RunAdditionalProcess(); //Executes additional code
}
La palabra clave base
se usa para referirse a la clase base cuando encadena constructores o cuando desea acceder a un miembro (método, propiedad, cualquier cosa) en la clase base que ha sido anulada u oculta en la clase actual. Por ejemplo,
class A {
protected virtual void Foo() {
Console.WriteLine("I''m A");
}
}
class B : A {
protected override void Foo() {
Console.WriteLine("I''m B");
}
public void Bar() {
Foo();
base.Foo();
}
}
Con estas definiciones,
new B().Bar();
saldría
I''m B
I''m A
La palabra clave base
se utiliza para acceder a los miembros de la clase base que han sido anulados (u ocultados) por los miembros de la subclase.
Por ejemplo:
public class Foo
{
public virtual void Baz()
{
Console.WriteLine("Foo.Baz");
}
}
public class Bar : Foo
{
public override void Baz()
{
Console.WriteLine("Bar.Baz");
}
public override void Test()
{
base.Baz();
Baz();
}
}
Llamando Bar.Test
luego daría resultado:
Foo.Baz;
Bar.Baz;
Puede usar la base para completar los valores en el constructor de la clase base de un objeto.
Ejemplo:
public class Class1
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime Birthday { get; set; }
public Class1(int id, string name, DateTime birthday)
{
ID = id;
Name = name;
Birthday = birthday;
}
}
public class Class2 : Class1
{
public string Building { get; set; }
public int SpotNumber { get; set; }
public Class2(string building, int spotNumber, int id,
string name, DateTime birthday) : base(id, name, birthday)
{
Building = building;
SpotNumber = spotNumber;
}
}
public class Class3
{
public Class3()
{
Class2 c = new Class2("Main", 2, 1090, "Mike Jones", DateTime.Today);
}
}
Si tiene el mismo miembro en clase y es súper clase, la única forma de llamar a miembro de súper clase es usar la palabra clave base
:
protected override void OnRender(EventArgs e)
{
// do something
base.OnRender(e);
// just OnRender(e); will bring a StakOverFlowException
// because it''s equal to this.OnRender(e);
}
Utilizará la palabra clave base
cuando override
una funcionalidad, pero también desea que se produzca la funcionalidad anulada.
ejemplo:
public class Car
{
public virtual bool DetectHit()
{
detect if car bumped
if bumped then activate airbag
}
}
public class SmartCar : Car
{
public override bool DetectHit()
{
bool isHit = base.DetectHit();
if (isHit) { send sms and gps location to family and rescuer }
// so the deriver of this smart car
// can still get the hit detection information
return isHit;
}
}
public sealed class SafeCar : SmartCar
{
public override bool DetectHit()
{
bool isHit = base.DetectHit();
if (isHit) { stop the engine }
return isHit;
}
}