有关类的成员方法有以下相关的知识点
1.成员方法的基本语法
2.重载
3.参数
4.修饰符
基本语法
这和函数的声明的格式有些相似,但多了一个修饰符。参数列表是可选的。如果没有返回类型要使用void关键字。
重载
重载是指在类中有两个或以上的成员方法(包括继承过来的)方法名相同,但参数类型或参数个数不同。这种特性是对多态机制的一种实现,实现了编译时的多态性。(还有一种运行时的多态性)
public class 日期
{
int 星期;
public void 输入(int 星期)
{
//不用类型转换就可以直接写进字段
}
public viod 输入(string 星期)
{
//进行类型转换后再写入字段
}
public void 输出()
{
//输出星期几
}
public static void Main()
{
日期 日期对象 = new 日期();
日期对象.输入(2);
日期对象.输出();
}
}成员方法的参数
成员方法的参数有两点要注意,一是参数本身的类型,二是对关键字ref,out,params用法的理解。
1.在不使用关键字的情况,也称为传值型参数。这种情况是为参数建立以个副本,把副本传到成员方法内部以供使用,需要注意的是值类型的参数和引用型的参数在结果上有些差别。方法里面对对参数的修改不会影响到值类型,但会影响到引用类型,因为引用型参数是把引用本身的副本传到方法里面去了,而不是把引用指向的对象的副本传到方法里面。下面给个例子,一看就能理解,说多了反而不好理解。
class Element
{
public int Number = 10;
}
class Test
{
static void Change(Element obj,int value)
{
obj.Number = 100;
value = 100;
}
static void Main()
{
Element j =new Element();
int n = 10;
Change(j, n);
Console.WriteLine(j.Number.ToString());
Console.WriteLine(n.ToString());
}
}
结果是 100,10
2.ref关键字的使用,使用这个关键字后就叫按引用传递,或者传址型参数,使用这个关键字的特点是,不关参数是值类型还是引用类型,方法对参数的修改都会影响到传入参数本身。 需要注意的是不管是在方法的声明还是调用的时候,都要使用关键字ref,而其参数本身要在调用前进行初始化。(个人觉得ref对引用类型的参数意义不大)
3.out 和ref作用差不多,而其在编译时的处理方式也是一样的。由于这个原因,两个方法只是out 和 ref不同,不能算重载。他们的不同之处在于 ref 要求变量必须在传递之前进行初始化,out不用。out一般用于多个返回值的方法。
4.params让方发使用变长参数,也就是可以使用任意个数的参数,但必须遵循如下规则,在方法声明中params之后不能跟其它参数,一个方法中只能有一个params,使用params的参数必需是数组类型。
class App
{
public static void UseParams(params object[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
}
static void Main()
{
// 一般做法是先构造一个对象数组,然后将此数组作为方法的参数
object[] arr = new object[3] { 100, 'a', "keywords" };
UseParams(arr);
// 而使用了params修饰方法参数后,我们可以直接使用一组对象作为参数
// 当然这组参数需要符合调用的方法对参数的要求
UseParams(100, 'a', "keywords");
Console.Read();
}
}这个例子是Hunts.C我觉得很不错,就借来用用。
修饰符
园子里面写修饰符的很多,想推荐两个,一个是Athrun的C#的修饰符,写的很全,还有一个就是这张来自吴有鋆的图

这个东西很多也很杂,而且用的地方也不经相同,我想在后面的学习中逐步介绍,一次说多也记不住。


浙公网安备 33010602011771号