Algunos usos de base y estas palabras clave en C#

De hecho, el mayor uso de base está en el polimorfismo del desarrollo relativo Base puede llamar a su constructor de clase base al crear una instancia de clase derivada o llamar a un método en la clase base que ha sido anulado por otros métodos.
Por ejemplo:


2.1 Acerca de la llamada base al constructor de la clase base

public class A 
{ 
        public A() 
        { 
                Console.WriteLine("Build A"); 
        } 
} 
public class B:A 
{ 
        public B():base() 
        { 
                Console.WriteLine("Build B"); 
        } 
        static void Main() 
        { 
                B b = new B(); 
                Consola.ReadLine(); 
        } 
}

Cree un objeto de instancia de B, y el resultado es imprimir Build A y Build B al mismo tiempo.


2.2 Acerca de la base El método de llamar a la clase base en la clase derivada.

public class A 
{ 
        public virtual void Hello() 
        { 
                Console.WiriteLine("Hello"); 
        } 
} 
public class B : A 
{ 
        public override void Hello() 
        {                
                base.Hello();//Llamar al método de la clase base , muestra Hello 
                Console.WriteLine("Mundo"); 
        } 
}

De esta forma, si el programa llama a B.Hello(), el efecto obtenido será Hello World.


Finalmente, según la introducción de MSDN Library, estas dos palabras clave pertenecen al tipo de [palabra clave de acceso]

 

++++++++++++++++++++++++++++ Línea divisoria invencible ++++++++++++++++++ +++++++++++

++++++++++++++++++++++++++++++++ Artículo 2++++++++++++++++++ ++ ++++++++++

 

sobre la base

La palabra clave base se usa para acceder a miembros de la clase base desde clases derivadas:
para llamar a métodos en la clase base que han sido anulados por otros métodos.
Especifica el constructor de la clase base al que se debe llamar al crear una instancia de la clase derivada.
El acceso a la clase base solo se puede realizar en constructores, métodos de instancia o accesos a propiedades de instancia.


Ejemplo:
1. Llamar a un método de clase base en una clase derivada.

utilizando el sistema; 
clase pública BaseClass 
{ 
    cadena protegida _className = "BaseClass"; 
    public virtual void PrintName() 
    { 
        Console.WriteLine("Nombre de clase: {0}", _className); 
    } 
} 
clase DerivedClass: BaseClass 
{ 
    public string _className = "DerivedClass"; 
    public override void PrintName() 
    { 
        Console.Write("El nombre de la clase base es {0}"); 
        //调用基类方法
        base.PrintName(); 
        Console.WriteLine("Esta clase derivada es {0}", _className); 
    } 
} 
clase TestApp 
{ 
    public static void Main()
        ClaseDerivada dc = nueva ClaseDerivada(); 
        dc.ImprimirNombre(); 
    } 
}

2. Llame al constructor de la clase base en la clase derivada.

// palabras clave_base2.cs 
usando System; 
clase pública BaseClass 
{ 
    int num; 
    public BaseClass() 
    { 
        Console.WriteLine("en BaseClass()"); 
    } 
    public BaseClass(int i) 
    { 
        num = i; 
        Console.WriteLine("in BaseClass(int {0})", num); 
    } 
} 
public class DerivedClass : BaseClass 
{ 
    // 该构造器调用 BaseClass.BaseClass() 
    public DerivedClass() 
        : base() 
    { 
    } 
    // 该构造器调用 BaseClass.BaseClass(int i) 
    public DerivedClass(int i) 
        : base (yo) 
    { 
    }
    static void Main() 
    { 
        DerivedClass dc = new DerivedClass(); 
        ClaseDerivada dc1 = nueva ClaseDerivada(1)(); 
        Consola.ReadLine(); 
    } 
}

Nota:
Es un error usar la palabra clave base de un método estático.
base se utiliza principalmente para el desarrollo orientado a objetos, lo que se refleja en el Ejemplo 2.

 

sobre esto

La palabra clave this se refiere a la instancia actual de la clase.
Los usos comunes de esto son:
Calificación de miembros ocultos por nombres similares
Pasar objetos como argumentos a otros métodos
Declarar indexadores


Ejemplo: 

// este 关键字
// keywords_this.cs 
using System; 
empleado de clase 
{ 
    cadena privada _nombre; 
    privado int _edad; 
    cadena privada[] _arr = nueva cadena[5]; 
    public Employee(string name, int age) 
    { 
        // 使用this限定字段,name与age 
        this._name = name; 
        this._edad = edad; 
    } 
    public string Nombre 
    { 
        get { return this._name; } 
    } 
    public int Edad 
    { 
        get { return this._age; } 
    } 
    // 打印雇员资料
    public void PrintEmployee() 
    {  
        // Pasar el objeto Employee como parámetro al método DoPrint
        Print.DoPrint(this);
    } 
    // 声明索引器
    public string this[int param] 
    { 
        get { return _arr[param]; } 
        set { _arr[parámetro] = valor; } 
    } 
} 
class Print 
{ 
    public static void DoPrint(Employee e) 
    { 
        Console.WriteLine("Nombre: {0}\nEdad: {1}", e.Name, e.Age); 
    } 
} 
class TestApp 
{ 
    static void Main() 
    { 
        Empleado E = nuevo empleado ("Cacerías", 21); 
        E[0] = "Scott"; 
        E[1] = "Leigh"; 
        E[4] = "Kiwis"; 
        E.ImprimirEmpleado();
        for (int i = 0; i < 5; i++) 
        {
            Console.WriteLine("Nombre del amigo: {0}", E[i]); 
        } 
        Consola.ReadLine(); 
    } 
}

Supongo que te gusta

Origin blog.csdn.net/mr_five55/article/details/130897350
Recomendado
Clasificación