一.访问关键字:base,this
base:访问基类的成员,用于从派生类中访问基类的成员,
1.调用基类上已经被重写的方法。
2.指定创建派生类实例时应调用的基类构造函数。
(对基类的访问只能在派生类的构造函数实例的方法和实例的属性访问器中)
属性访问器:get,set函数。不能在静态方法中使用base关键字。
例:
在子类的方法中写 base.GetInfo();调用基类的方法。
基类中的构造函数重载了,Mybase()和Mybase(int i);
在子类的构造函数中public MyDerived():base(int i)
public MyDerived(int i):base()
this:引用当前对象。用于引用为其调用方法的当前实例,静态成员函数没有this指针。可以用于从构造函数、实例方法、实例访问器中访问成员。
1.限定被相似的名子隐藏的成员
public void A(int a, int b )
{
this.a=a;
this.b=b;
}
2.将对象作为参数传递到函数中
public void ShowInstance()
{
print(this);
console.writeline("lalalalllalalala");
}
3.声明索引器
public int this[int param]
{
get{ return array[param]; }
set{ array[param]=value; }
}
二.转换关键字:explicit, implicit, operator
explicit:用于声明用户定义的显式类型转换运算符。
例:
class MyType
{
public static explicit operator MyType(int i) //从int显式转换成MyType类型的代码!!!
}
显式类型转换符必须通过类型转换调用。需要在转换失败时抛出异常。
if(转换失败的条件)
throw new ArgumentException();
int i;
MyType x = (MyType)i;
注意!!!!!!!如果转换可能导致信息丢失,则使用explicit关键字。
implicit:用于声明用户定义的 隐式类型转换运算符。
例:
class MyType
{
public static implicit operator int(MyType i) //从MyType隐式转换成Mint类型的代码!!!
}
MyType i;
int x = i;
注意!!!!!!!!!!!由于隐式转换在程序员未指定的情况下发生,所以必须防止出现不良的后果。只有在一定不会出现异常和信息丢失时才可以使用implicit,否则使用expicit。
operator:用于声明用户在类或结构中自定义的运算符。有四种形式:
public static 结果类型 operator unary-operator (参数类型 参数名)
public static implict operator 目标类型 (输入类型 参数名)
public static explict operator 目标类型 (输入类型 参数名)
//implict中,目标类型一般是封闭类型,例如:int, double, byte等。
//explict中,目标类型一般是自定义类型,例如:MyType等。
三.文字关键字:null,false,true
null:表示不引用任何对象的空引用的值。null是引用类型的默认值。
true:用户自定义的类型可以重载true运算符,用来表示是否满足条件,若满足则返回bool值的true,否则返回false。
注意!!!!!!!若在自定义类型中定义了true运算符,则必须定义false运算符。
true文字值:表示bool的真。
false:false运算符:用户自定义的类型可以重载false运算符,用来表示是否满足条件,若不满足则返回bool值的true,否则返回false。
注意!!!!!!!若在自定义类型中定义了false运算符,则必须定义true运算符。
false文字值:表示bool的假。
(true和false运算符可以用在任何条件判断中。)
四.方法参数关键字:params,ref,out
params:用于指定在参数数目可变处,采用参数的方法参数。只能有一个params,并且在他后面不能再有参数。
方法参数:如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值
using System;
public class MyClass
{