1.属性
属性是对类的字段提供特定的访问的类成员,是类的组成部分。由于属性是类的成员,因此可以访问私有实例变量,又不会危害类中的私有变量保护和隐私的数据。
格式如下:
[访问修饰符] 数据类型 属性名
{
get
{
//执行代码
teturn<表达式>;
}
set
{
//执行代码
//表达式(可以使用关键字value)
}
}
一个属性包含一个get方法和一个set方法,属性用做一个赋值操作的左值时,调用set方法;用作右值时,调用get方法 。属性中不一定同时包含get和set两张访问器。
例:
GradeBook.cs
using System;
public class GradeBook
{
private string courseName;//string默认初始值为null
public string CourseName //一个public类型的属性
{
get
{
return courseName;
}
//get访问方法使客户可以读取私有实例变量courseName的值,包含一条return语句
set
{
courseName=value;
}
//set访问方法使客户可以修改courseName的值,value为上下文关键字
//value在set访问方法中隐式的声明和初始化,完成任务后,set方法不会返回任何数据
}
public void DisplayMessage()
{
Console.WriteLine("welcome come to the book for {0}",CourseName);
}
}
GradeBookTest.cs
using System;
public class GradeBookTest
{
public static void Main(string[] args)
{
GradeBook myGradeBook = new GradeBook();
//Console.WriteLine("initial course name is {0}", myGradeBook.CourseName);
Console.WriteLine("输入课程名称:");
myGradeBook.CourseName = Console.ReadLine();
//ReadLine()被赋予courseName的set访问方法的隐式参数value,
//然后参数value将其赋予实例变量courseName
//Console.WriteLine();
myGradeBook.DisplayMessage();
Console.ReadLine();
}
}
2.索引器
与属性类似,也是访问类中字段的方法,不同之处在于索引器的访问器采用参数,通过它可以对类的对象按照与数组相同的方式进行索引。
声明格式如下:
[访问修饰符] 数据类型 this [索引类型 形参]
{
get
{
//执行代码
return表达式;
}
set
{
//执行代码
//表达式(可以使用value关键字)
}
}
使用格式如下:
对象名[索引]
实例:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ex7_8
{
class Program
{
static void Main(string[] args)
{
Array z = new Array();
for (int i = 0; i < 100; i++)
{
z[i] = z.Multiple(i+1,5);
}
Console.WriteLine("1到100之间的整数与5的乘机是:");
for (int i = 0; i < 100; i++)
{
Console.Write("{0}\t",z[i]);
}
Console.ReadLine();
}
}
}
Array.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ex7_8
{
class Array
{
private long[] arr=new long[100];
public long this[int index]
{
get
{
if (index < 0 || index >= 100)
return arr[0];
else
return arr[index];
}
set
{
if (index < 0 || index >= 100)
arr[0] = value;
else
arr[index] = value;
}
}
public long Multiple(int x,int y)
{
return(x*y);
}
}
}
结果: