C# 中的關(guān)鍵字之:base、this。base 關(guān)鍵字用于從派生類中訪問基類的成員:調(diào)用基類上已被其他方法重寫的方法。
指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù)。
基類訪問只能在構(gòu)造函數(shù)、實(shí)例方法或?qū)嵗龑傩栽L問器中進(jìn)行。
示例:
在派生類中調(diào)用基類方法。
以下是引用片段:
// base 關(guān)鍵字
// 訪問基類成員
using System;
public class BaseClass
{
protected string _className = "BaseClass";
public virtual void PrintName()
{
Console.WriteLine("Class Name: {0}", _className);
}
}
class DerivedClass : BaseClass
{
public string _className = "DerivedClass";
public override void PrintName()
{
Console.Write("The BaseClass Name is {0}");
//調(diào)用基類方法
base.PrintName();
Console.WriteLine("This DerivedClass is {0}", _className);
}
}
class TestApp
{
public static void Main()
{
DerivedClass dc = new DerivedClass();
dc.PrintName();
}
}
/**//*
控制臺輸出:
The BaseClass Name is BaseClass
This DerivedClass is DerivedClass
*/
在派生類中調(diào)用基類構(gòu)造函數(shù)。
以下是引用片段:
// keywords_base2.cs
using System;
public class BaseClass
{
int num;
public BaseClass()
{
Console.WriteLine("in BaseClass()");
}
public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int {0})", num);
}
}
public class DerivedClass : BaseClass
{
// 該構(gòu)造器調(diào)用 BaseClass.BaseClass()
public DerivedClass() : base()
{
}
// 該構(gòu)造器調(diào)用 BaseClass.BaseClass(int i)
public DerivedClass(int i) : base(i)
{
}
static void Main()
{
DerivedClass dc = new DerivedClass();
DerivedClass dc1 = new DerivedClass(1);
}
}
/**//*
控制臺輸出:
in BaseClass()
in BaseClass(1)
*/
注意點(diǎn):
從靜態(tài)方法中使用 base 關(guān)鍵字是錯(cuò)誤的。
base 主要用于面向?qū)ο箝_發(fā)的對態(tài)這方面,在示例2中有體現(xiàn)。
this 關(guān)鍵字引用類的當(dāng)前實(shí)例。
指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù)。
基類訪問只能在構(gòu)造函數(shù)、實(shí)例方法或?qū)嵗龑傩栽L問器中進(jìn)行。
示例:
在派生類中調(diào)用基類方法。
以下是引用片段:
// base 關(guān)鍵字
// 訪問基類成員
using System;
public class BaseClass
{
protected string _className = "BaseClass";
public virtual void PrintName()
{
Console.WriteLine("Class Name: {0}", _className);
}
}
class DerivedClass : BaseClass
{
public string _className = "DerivedClass";
public override void PrintName()
{
Console.Write("The BaseClass Name is {0}");
//調(diào)用基類方法
base.PrintName();
Console.WriteLine("This DerivedClass is {0}", _className);
}
}
class TestApp
{
public static void Main()
{
DerivedClass dc = new DerivedClass();
dc.PrintName();
}
}
/**//*
控制臺輸出:
The BaseClass Name is BaseClass
This DerivedClass is DerivedClass
*/
在派生類中調(diào)用基類構(gòu)造函數(shù)。
以下是引用片段:
// keywords_base2.cs
using System;
public class BaseClass
{
int num;
public BaseClass()
{
Console.WriteLine("in BaseClass()");
}
public BaseClass(int i)
{
num = i;
Console.WriteLine("in BaseClass(int {0})", num);
}
}
public class DerivedClass : BaseClass
{
// 該構(gòu)造器調(diào)用 BaseClass.BaseClass()
public DerivedClass() : base()
{
}
// 該構(gòu)造器調(diào)用 BaseClass.BaseClass(int i)
public DerivedClass(int i) : base(i)
{
}
static void Main()
{
DerivedClass dc = new DerivedClass();
DerivedClass dc1 = new DerivedClass(1);
}
}
/**//*
控制臺輸出:
in BaseClass()
in BaseClass(1)
*/
注意點(diǎn):
從靜態(tài)方法中使用 base 關(guān)鍵字是錯(cuò)誤的。
base 主要用于面向?qū)ο箝_發(fā)的對態(tài)這方面,在示例2中有體現(xiàn)。
this 關(guān)鍵字引用類的當(dāng)前實(shí)例。

