Quel est le but du mot clé «base» dans c #?

Ainsi, pour les classes de base utilisées pour certaines méthodes réutilisables de type Commom dans chaque page de mon application …

public class BaseClass:System.Web.UI.Page { public ssortingng GetRandomPasswordUsingGUID(int length) { ssortingng guidResult = System.Guid.NewGuid().ToSsortingng(); guidResult = guidResult.Replace("-", ssortingng.Empty); return guidResult.Subssortingng(0, length); } } 

Donc, si je veux utiliser cette méthode, je le ferais simplement,

 public partial class forms_age_group : BaseClass { protected void Page_Load(object sender, EventArgs e) { //i would just call it like this ssortingng pass = GetRandomPasswordUsingGUID(10); } } 

Il fait ce que je veux mais il existe un mot clé “Base” qui traite de la classe de base dans c # … Je veux vraiment savoir quand utiliser le mot clé de base dans ma classe dérivée ….

Tout bon exemple …

Le mot clé base est utilisé pour faire référence à la classe de base lors du chaînage de constructeurs ou lorsque vous souhaitez accéder à un membre (méthode, propriété, tout) dans la classe de base qui a été remplacée ou masquée dans la classe en cours. Par exemple,

 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(); } } 

Avec ces définitions,

 new B().Bar(); 

produirait

 I'm B I'm A 

Si vous avez le même membre en classe et sa super classe, la seule façon d’appeler un membre depuis la super classe – en utilisant base mot clé 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); } 

Vous utiliserez base mot base clé de base lorsque vous override une fonctionnalité mais souhaiterez toujours que la fonctionnalité remplacée se produise également.

Exemple:

  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; } } 

Le mot clé base est utilisé pour accéder aux membres de la classe de base qui ont été remplacés (ou masqués) par des membres de la sous-classe.

Par exemple:

 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(); } } 

L’appel de Bar.Test produirait alors:

 Foo.Baz; Bar.Baz; 

Base est utilisé lorsque vous remplacez une méthode dans une classe dérivée mais que vous souhaitez simplement append des fonctionnalités supplémentaires à la fonctionnalité d’origine

Par exemple:

  // Calling the Area base method: public override void Foo() { base.Foo(); //Executes the code in the base class RunAdditionalProcess(); //Executes additional code } 

Vous pouvez utiliser base pour remplir des valeurs dans le constructeur de la classe de base d’un object.

Exemple:

 public class Class1 { public int ID { get; set; } public ssortingng Name { get; set; } public DateTime Birthday { get; set; } public Class1(int id, ssortingng name, DateTime birthday) { ID = id; Name = name; Birthday = birthday; } } public class Class2 : Class1 { public ssortingng Building { get; set; } public int SpotNumber { get; set; } public Class2(ssortingng building, int spotNumber, int id, ssortingng 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); } }