return 语句使用几种形式是:
定义方式:
return +常量
return +变量
return +表达式
return +方法
return;
示例
return 0;
return r;
return a+b;
return Add(a+b);
return ;
示例:
class Duck
{
string name; //鸭子的名字
string color;//鸭子的颜色
int weight;//鸭子的重量
bool live;//鸭子是否活着
void Quack()
{
Console.WriteLine("嘎嘎叫");
}
string GetName()
{
return name;
}
}
return语句使用时重点要注意以下几个问题:
一个方法中可以出现多个return 语句,但只有一个会被执行。
返回值的数据类型必须与方法定义中返回值数据类型相同。
如果方法定义了返回值则必须使用return 语句进行返回。
当遇到return 语句时,方法执行将终止,执行被中断并退出方法。
我们可以将上面的Quack方法修改为:
void Quack()
{
if(!live)
return;/* 中断执行,跳出方法,因为鸭子是死的 */
//没死就嘎嘎叫
Console.WriteLine("嘎嘎叫");
}
我们再来看一个稍微复杂一点的例子:
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
public class Box
{
//盒子的高,宽,长,体积
int height,width,length,volume;
//使用构造方法,构造盒子
public Box(int h,int w,int len)
{
height=h;
width=w;
length=len;
}
public int calcVolume()
{
volume=width * height * length;
return volume;
}
public void print()
{
Console.WriteLine("体积为:{0}",volume);
}
}
class Program
{
static void Main(string [] args)
{
Box box1=new Box(1,2,3);
box1.calcVolume();
box1.print();
Box box2=new Box(4,5,6);
int r=box2.calcVolume();
Console.WriteLine("盒子的体积为{0}",r);
}
}
}
在这个例子中我们定义了一个盒子类,并在此类中定义了盒子的长、宽、高等属性以及计算体积等方法。在Main方法里我们使用这个类定义了两个盒子对象,对于box1对象,调用了其calcVolume方法来计算其体积,然后通过其自身的print方法将其体积打印出来;对于box2对象,没有使用其自身的print方法来显示其体积,而是定义了一个变量来接受这个体积,并在Main方法里自己显示这个体积值。
类的使用——以鸭子为例
我们在介绍字段时已经使用过类了。使用类,我们先需要使用new关键字来创建一个类的对象(使用new 操作符,系统会创建此类的实例,并返回该实例给你定义的对象,所以这个过程也叫类的实例化),然后使用点号“.”来操作对象的字段。不仅仅是类的字段使用点号来操作,实际上类的任何成员都是通过点号来调用的。如方法的调用方式如下:
Duck myDuck=new Duck();
myDuck.Walk();//鸭子走
myDuck.Quack();//鸭子叫
通过new 操作符号,系统会在内存中创建一个鸭子的对象,创建了对象以后我们就可以通过点号操作符来访问鸭子的方法了。这里要注意,鸭子对象是在内存中实际存在的,而鸭子类只是鸭子的描述,通过new操作符号系统根据鸭子类创建鸭子对象,鸭子对象和鸭子类就像我们前面讲过的菜和菜谱的关系,完整的鸭子类使用示例如下:
using System;
namespace Test
{
class Duck
{
string name;//鸭子的名字
string color;//鸭子的颜色
int weight;//鸭子的重量
bool live;//鸭子是否活着
public void Quack()
{
Console.WriteLine("嘎嘎叫");
}
public void SetName(string str)
{
name=str;
}
public string GetName()
{
return name;
}
}
class Test
{
[STAThread]
static void Main(string [] args)
{
Duck myDuck=new Duck();//用new操作符创建一个鸭子的对象
myDuck.SetName("小黄");//设置鸭子的名字
string name=myDuck.GetName();//得到鸭子的名字
myDuck.Quack();//鸭子叫
}
}
}
上面例子中出现的鸭子的方法在定义时我们也使用了一个public关键字,这是一个方法的访问修饰符,用来控制对象成员被访问的权限,上面的例子中我们创建了Duck类,里面包含字段和方法。然后我们使用new操作符创建了一只鸭子,并调用了鸭子的SetName方法为鸭子设置一个名字,调用GetName方法获得鸭子的名字,还调用了鸭子的“叫”方法。
另外要注意类对象的创建方式,我们知道普通变量在创建时可以初始化,那么对象在创建时如何初始化?要注意引用类型初始化都是采用null值(“空引用的意思”)来初始化,使用null来初始化表示目前我们建立的对象并没有实例化还是“空”的,如下我们声明一个鸭子对象并初始化为null:
Duck myDuck=null;
在使用类定义的对象时要注意它们和值类型变量的异同点,如值类型一般都支持多种运算符,但引用类型不支持,而且对象通常在创建时需要new关键字等。和值类型相同的是,类类型定义的对象也支持赋值运算,并且也是只能同类型可以给同类型的赋值。