ref
我们知道,在c#中,当我们在一个方法中想要访问另一个方法中的变量的时候,有两种解决方案---参数和返回值。但当需要返回多个值,并且是不同类型的值的之后应该怎么办呢?解决方案可以是
(1)将所有类型数据转换成字符串类型,到最后再都转换回来,这样就比较麻烦了
(2)利用方法的out参数和ref参数
下面要跟大家介绍的就是第二个简单的方法:方法的out和ref参数
在讲解方法的out和ref参数之前我们先看看最普通的参数传递
static void Main(string[] args)
{
int number1=10;
int number2 = 20;
int sum = AddNumber(number1, number2);
console.WriteLine(number1); ;
Console.WriteLine(number2);
Console.WriteLine(sum);
Console.ReadKey();
}
public static int AddNumber( int num1, int num2)
{
return num1 + num2;
}
方法的out参数(与最简单的参数传递差别已用红框标出)
此程序的返回值为10,200,210
概念:out是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所
总结:1.如果方法用参数out修饰了,那么参数在方法外也要用out修饰
2. 如果方法的参数用out修饰了,那么这个参数必须在方法里进行赋值
3.当参数在方法外进行赋值时,参数out把方法里的值传到了方法外,所以最后参数值为在方法里赋的值
例题1:
static void Main(string[] args)
{
int number1=10;
int number2=20;
int sum = AddNumber( number1, out number2);
Console.WriteLine(number1); ;
Console.WriteLine(number2);
Console.WriteLine(sum);
Console.ReadKey();
}
public static int AddNumber(int num1, out int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;
}
此程序的返回值为什么呢???
开始我理所应当的认为,此程序的返回值为100,200,300,但是大家再仔细看一看,num2没有用out修饰哦,这可是一个大坑哦!
所以,最后的结果是10,200,210
方法的ref参数(与最简单的参数传递差别已用红框标出)
此程序的返回值为10,200,210
很容易可以看出,方法的out和ref只是修改参数,那么他们最后的返回值是相同的
总结:1.如果方法用参数out修饰了,那么参数在方法外也要用out修饰
2.如果方法用参数ref修饰了,那么参数在方法外必须赋初值
那么当这种情况呢?
例题2:
static void Main(string[] args)
{
int number1=10;
int number2=20;
int sum = AddNumber( number1, ref number2);
Console.WriteLine(number1); ;
Console.WriteLine(number2);
Console.WriteLine(sum);
Console.ReadKey();
}
public static int AddNumber(int num1, ref int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;
}
例题1和例题2,只有num2修饰的差别,例题1用的是out修饰,返回值为10,200,210;
例题2用的是ref修饰,返回值为100,200,300;
由此可以看出参数out和ref修饰的差别:
ref可以把值传到方法里,也可以把值传到方法外
out只可以把值传到方法外
相关阅读
据了解,天猫Outlets大牌长驻已经开放了,很多的网友都喜欢在这个平台上面购物,因为都是大牌的商品,但是价格都很优惠,作为商家,您知道天
需求:读取项目根目录下的InputStreamReaderDemo1.java,并输出到命令行 分析:
1. 重载和重写的区别 1) 所处位置不同重载在同类中重写在父子类中2) 定义方式不
C# 使用FileSystemWatcher类来对一个日志文件的变化进
C# 使用FileSystemWatcher类来对一个日志文件的变化进行实时监测 应用场景描述:在我的工作中,遇到这么一个情况,有一个没有源码的程
1.首先我们需要以下几个dll,第一个和第二个需要在项目中引用,第三个是用来导入ToolBox的,第四个是用来汉化的的,语言是可以选择的。默