8.5 this关键字 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//在类外要通过类的对象名来访问类的成员,但在类的定义代码中,可以直接使用所有成员。
//比如Cat类的内部可以直接使用变量name,在类外则要通过对象名引用,如Kitty.name。
//其实每个对象都有一个指向自己的this引用符,一般情况下,在类的内部,你可以直接使用类的成员
//也可以通过this引用符使用变量
namespace _8._5this关键字
{
class Time
{
//类的变量成员
private int hour;
private int minute;
private int second;
//在函数中显式的使用this引用符
private void SetTime(int hour,int minute,int second)
{
this.hour = hour;
this.minute = minute;
this.second = second;
}
//其他成员
//……
//……
}
class Program
{
static void Main(string[] args)
{
}
}
}
8.6 索引:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _8._6索引
{
//索引可以让我们像数组那样访问类的成员
//下面我们定义一个“立方体类”,它有长宽高三个属性
class Cube
{
//私有变量成员
private double length;
private double width;
private double heigh;
//构造函数
public Cube(double lengthValue,double widthValue,double heighValue)
{
length = lengthValue;
width = widthValue;
heigh = heighValue;
}
//索引
public double this[int index]
{
get
{
switch(index)
{
case 0: return length;
case 1: return width;
case 2: return heigh;
default:
throw new IndexOutOfRangeException("下标出界!");
}
}
set
{
switch (index)
{
case 0: length = value; break;
case 1: width = value; break;
case 2: heigh = value; break;
default:
throw new IndexOutOfRangeException("下标出界!");
}
}
}
}
//索引的函数体与属性类似,也是用get和set访问器。get访问器用于获取成员变量的值,set访问器
//用来为成员变量赋值
//索引的使用方法和数组完全一样,如果我们创建了一个名为box的Cube对象,就可以用box[0],box[1],box[2]分别表示长方体的长宽高了
class Program
{
static void Main(string[] args)
{
Cube box = new Cube(6,5,4);
Console.WriteLine("长:{0}", box[0]);
Console.WriteLine("宽:{0}", box[1]);
Console.WriteLine("高:{0}", box[2]);
//计算面积
double area = 2 * (box[0]*box[1] + box[0]*box[2] + box[1]*box[2]);
Console.WriteLine("面积:{0}", area);
//计算体积
double volume = 1;
for(int i=0;i<=2;++i)
{
volume *= box[i];
}
Console.WriteLine("体积:{0}", volume);
Console.ReadLine();
//C#还为我们提供了多维索引,只需提供多个下标即可,比如
//Matrix类中的多维索引
//public double this[int rowIndex,int columnIndex]
//这需要嵌套的Switch语句才能实现
}
}
}
运行结果如下: