在C#中,咱们会见到out,ref关键字,这跟java很不同,接下来,咱们就来了解一番,java
1,out关键字spa
概念:一个带有输出参数的的方法(方法的的参数有被out关键字修饰),有义务在方法退出的时候给这个参数一个恰当的赋值,若是没有,方法编译会报错。设计
例子:伪代码以下string
static void doMethod(int y,out int ans) it
{编译
ans = y*2;//被关键字out修饰的参数ans被赋值变量
}引用
static void main(string args[]){方法
int ans;static
doMethod(90,out ans);//调用带输出参数的方法,也必须使用out关键字修饰
}
上面的例子说明,用输出参数返回一个数的一半,看似没有发现out的意义,实际上设计者设计out关键字是有一个颇有用的用途的:那就是咱们经过out关键字,能够在一个方法中一次就输出多个返回值,以下
static void doMethod(out string name,out int age,out char sex)
{
name = "张三";
age = "30";
sex = '1';
}
2,ref关键字
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所作的任何更改都将反映在该变量中。
static void Main(string[] args)
{
int x = 1;
int y = 1;
doSome(ref x);
doSome(y);
Console.Write(x+"");
Console.Write(y + "");
}
static void doSome(ref int x)
{
x = 10;
}
static void doSome( int x)
{
x = 10;
}
以上伪代码可看出,ref关键字是对变量的引用进行改变,因此doSome(ref int x)输出10,doSome(int x)输出1,另外能够看出,重载时,ref修饰和不修饰的的签名被认为是不一样的,重载能够成功。