C# 方法(返回值、返回语句和void方法)
本章内容:
方法的结构
方法体内部的代码执行
局部变量
局部常量
控制流
方法调用
返回值
返回语句和void方法
局部函数
参数
值参数
引用参数
引用类型作为值参数和引用参数
输出参数
参数数组
参数类型总结
方法重载
命名参数
可选参数
栈帧
递归
返回值
方法可以向调用代码返回一个值。返回的值被插入到调用代码中发起调用的表达式所在的
位置。
要返回值,方法必须在方法名前面声明一个返回类型。
如果方法不返回值,它必须声明void返回类型。
下面的代码展示了两个方法声明。第一个返回int型值,第二个不返回值。
声明了返回类型的方法必须使用如下形式的返回语句从方法中返回一个值。返回语句包括
关键字return及其后面的表达式。每一条贯穿方法的路径都必须以一条这种形式的return语句
结束。
//计算返回类型的值
return Expression; //返回一个值
例如,下面的代码展示了一个名为GetHour的方法,它返回int型值。
int GetHour()
{DateTime dt=DateTime.Now; //获取当前时间和日期int hour=dt.Hour; //获取小时return hour; //返回一个值
}
也可以返回用户定义类型的对象。例如,下面的代码返回一个MyClass类型的对象。
MyClass method3()
{MyClass mc=new MyClass();...return mc;
}
来看另一个示例。在下面的代码中,方法GetHour在Main的WriteLine语句中被调用,并在
该位置返回一个int值到writeLine语句中。
class MyClass
{public int GetHour(){DateTime dt=DateTime.Now; //获取当前时间和日期int hour=dt.Hour; //获取小时return hour; //返回一个值}}class Program
{static void Main(){MyClass mc=new MyClass();Console.WriteLine("Hour:{0}",mc.GetHour());}
}
返回语句和void方法
在上一节,我们看到有返回值的方法须包含返回语句。void方法不需要返回语句。当控制
流到达方法体的关闭大括号时,控制返回到调用代码,并且没有值被插入到调用代码中。
不过,当特定条件符合的时候,我们常常会提前退出方法以简化程序逻辑。
可以在任何时候使用下面的返回语句退出方法,不带参数:
return;
这种形式的返回语句只能用于用void声明的方法。
例如,下面的代码展示了一个名为SomeMethod的void方法的声明。它可以在三个可能的地
方返回到调用代码。前两个在语句分支内。if语句将在第10章阐述。最后一个是方法体的结
尾处。
void SomeMethod()
{...if(SomeCondition) //如果...return; //返回到调用代码...if(OtherCondition) //如果...return; //返回到调用代码... //默认返回到调用代码
}
下面的代码展示了一个带有一条返回语句的void方法示例。该方法只有当时间是下午的时
候才写出一条消息,如图6-5所示,其过程如下。
首先,方法获取当前日期和时间(现在不用理解这些细节)。
如果小时小于12(也是在中午之前),那么执行return语句,不在屏幕上输出任何东
西,直接把控制返回给调用方法。
如果小时大于等于12,则跳过return语句,代码执行计WriteLine语句,在屏幕上输出信息。
class MyClass
{void TimeUpdate(){DateTime dt=DateTime.Now; //获取当前时间日期和时间if(dt.Hour<12) //若小时数小于12return; //则返回Console.WriteLine("It's afternoon!"); //否则,输出消息}static void Main(){MyClass mc=new MyClass(); //创建一个类实例mc.TimeUpdate(); //调用方法}
}