【回顾】C#从入门到精通第八章笔记
C#从入门到精通第八章笔记

属性和方法
1.属性的概念
属性是一种用于访问对象或类的特性的成员。属性可以包括字符串的长度、字体的大小、窗体的标题和客户的名称等。
属性是成员的自然扩展,两者都是关联类型的命名成员。
属性有访问器,这些访问器指定在它们的值被读取或写入时需要执行的语句。因此属性提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来。可以像使用公共数据成员一样使用属性,但实际上它们是称为“访问器”的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。
属性结合了字段和方法的多个方面。
对于对象的用户,属性显示为字段,访问该属性需要完全相同的语法。
对于类的实现者,属性是一个或两个代码块,表示一个get访问器和(或)一个set访问器。
当读取属性时,执行get访问器的代码块。
当向属性分配一个新值时,执行set访问器的代码块。
不具有set访问器的属性被视为只读属性,
不具有get访问器的属性被视为只写属性,
同时具有这两个访问器的属性为可读可写属性。
注意:
属性不能作为ref参数或out参数传递。
2.属性的使用
自定义属性在类模块内是通过以下方式声明的:
第一步,指定属性的访问级别,
第二步,指定后面的属性的类型,
第三步,接下来是属性的名称,
第四步,然后是声明get访问器和(或)set访问器的代码模块。
例如:
代码如下:
public class Date
{
private int day=7;
public int Day//星期属性,该属性为可读可写
{
get{return day;}
set
{
if((value>0)&&(value<8))
{
day=value;
}
}
}
}
说明:
get访问器与方法体相似,它必须返回属性类型的值;
而 set访问器类似于返回类型为void的方法,它使用称为value的隐式参数,此参数的类型是属性的类型。
3.方法的概念
方法是包含一系列语句的代码块。在C#中,每个执行指令都是在方法的上下文中完成的。
方法在类或结构中声明,声明时需要指定访问级别、返回值、方法名称及方法参数,方法参数放在括号中,并用逗号隔开。括号中没有内容表示声明的方法没有参数。
方法声明可以包含一组特性和private、public、protected、internal4个访问修饰符的任何一个有效组合,还可以包含new、static、virtual、override、sealed、abstract以及extern等修饰符。
如果以下所有条件都为真,则表明所声明的方法具有一个有效的修饰符组合。
①.该声明包含一个有效的访问修饰符组合。
②.该声明中所包含的修饰符彼此各不相同。
③.该声明最多包含下列修饰符中的一个:static、virtual和override。
④.该声明最多包含下列修饰符中的一个:new和override。
⑤.如果该声明包含abstract修饰符,则该声明不包含下列任何修饰符:static、virtual、sealed或extern。
⑥.如果该声明包含private修饰符,则该声明不包含下列任何修饰符:virtual、override或abstract。
⑦.如果该声明包含sealed修饰符,则该声明还包含override修饰符。
4.方法的分类
方法分为静态方法和非静态方法。
(1).若一个方法声明中含有static修饰符,则称该方法为静态方法。
(2).若没有static修饰符,则称该方法为非静态方法。
下面分别对静态方法和非静态方法进行介绍。
1.静态方法
静态方法代码如下:【使用类名调用静态方法】
public static int Add(int x,int y)/定义一个静态方法
{
return(x+y);
}
static void Main(string[]args)
{
Console.WriteLine(“结果为:“+Program.Add(3,5));
}
//使用类名调用静态方法
2.非静态方法
非静态方法是对类的某个给定的实例进行操作,而且可以用this来访问该方法。
代码如下:
public int Add(int x,int y)
{
return x+y;
}
static void Main(string[] args)
{
Program program=new Program();//实例化类对象
Console.WriteLine("结果为:"+program.Add(3,5));//使用类对象调用定义的非静态方法
}
说明:
调用非静态方法时,也可以使用this关键字。
第八章完!