base
base 关键字用于从派生类中访问基类的成员
调用基类上已被其他方法重写的方法
指定创建派生类实例时应调用的基类构造函数
基类访问只能在构造函数实例方法或实例属性访问器中进行
示例
在派生类中调用基类方法
// base 关键字
// 访问基类成员
using System;
public class BaseClass
{
protected string _className = BaseClass;
public virtual void PrintName()
{
ConsoleWriteLine(Class Name: {} _className);
}
}
class DerivedClass : BaseClass
{
public string _className = DerivedClass;
public override void PrintName()
{
ConsoleWrite(The BaseClass Name is {});
//调用基类方法
basePrintName();
ConsoleWriteLine(This DerivedClass is {} _className);
}
}
class TestApp
{
public static void Main()
{
DerivedClass dc = new DerivedClass();
dcPrintName();
}
}
/**//*
控制台输出:
The BaseClass Name is BaseClass
This DerivedClass is DerivedClass
*/
在派生类中调用基类构造函数
// keywords_basecs
using System;
public class BaseClass
{
int num;
public BaseClass()
{
ConsoleWriteLine(in BaseClass());
}
public BaseClass(int i)
{
num = i;
ConsoleWriteLine(in BaseClass(int {}) num);
}
}
public class DerivedClass : BaseClass
{
// 该构造器调用 BaseClassBaseClass()
public DerivedClass() : base()
{
}
// 该构造器调用 BaseClassBaseClass(int i)
public DerivedClass(int i) : base(i)
{
}
static void Main()
{
DerivedClass dc = new DerivedClass();
DerivedClass dc = new DerivedClass();
}
}
/**//*
控制台输出:
in BaseClass()
in BaseClass()
*/
注意点
从静态方法中使用 base 关键字是错误的
base 主要用于面向对象开发的对态这方面在示例中有体现
this
this 关键字引用类的当前实例
以下是 this 的常用用途
限定被相似的名称隐藏的成员
将对象作为参数传递到其他方法
声明索引器
示例
综合示例
// this 关键字
// keywords_thiscs
using System;
class Employee
{
private string _name;
private int _age;
private string[] _arr = new string[];
public Employee(string name int age)
{
// 使用this限定字段name与age
this_name = name;
this_age = age;
}
public string Name
{
get { return this_name; }
}
public int Age
{
get { return this_age; }
}
// 打印雇员资料
public void PrintEmployee()
{
// 将Employee对象作为参数传递到DoPrint方法
PrintDoPrint(this);
}
// 声明索引器
public string this[int param]
{
get { return _arr[param]; }
set { _arr[param] = value; }
}
}
class Print
{
public static void DoPrint(Employee e)
{
ConsoleWriteLine(Name: {}\nAge: {} eName eAge);
}
}
class TestApp
{
static void Main()
{
Employee E = new Employee(Hunts );
E[] = Scott;
E[] = Leigh;
E[] = Kiwis;
EPrintEmployee();
for(int i=; i<; i++)
{
ConsoleWriteLine(Friends Name: {} E[i]);
}
ConsoleReadLine();
}
}
/**//*
控制台输出
Name: Hunts
Age:
Friends Name: Scott
Friends Name: Leigh
Friends Name:
Friends Name:
Friends Name: Kiwis
*/
注意点
由于静态成员函数存在于类一级并且不是对象的一部分因此没有 this 指针在静态方法中引用 this 是错误的
索引器允许类或结构的实例按照与数组相同的方式进行索引索引器类似于属性不同之处在于它们的访问器采用参数