常州市北环中学新地址:C#中ref和out的使用小结
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 04:06:00
ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。
使用ref前必须对变量赋值,out不用。
out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。
区别可以参看下面的代码:
using System;
class TestApp
{
static void outTest(out int x, out int y)
{//离开这个函数前,必须对x和y赋值,否则会报错。
//y = x;
//上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行
x = 1;
y = 2;
}
static void refTest(ref int x, ref int y)
{
x = 1;
y = x;
}
public static void Main()
{
//out test
int a,b;
//out使用前,变量可以不赋值
outTest(out a, out b);
Console.WriteLine("a={0};b={1}",a,b);
int c=11,d=22;
outTest(out c, out d);
Console.WriteLine("c={0};d={1}",c,d);
//ref test
int m,n;
//refTest(ref m, ref n);
//上面这行会出错,ref使用前,变量必须赋值
int o=11,p=22;
refTest(ref o, ref p);
Console.WriteLine("o={0};p={1}",o,p);
}
}
原文出处:编程之道
使用ref前必须对变量赋值,out不用。
out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。
区别可以参看下面的代码:
using System;
class TestApp
{
static void outTest(out int x, out int y)
{//离开这个函数前,必须对x和y赋值,否则会报错。
//y = x;
//上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行
x = 1;
y = 2;
}
static void refTest(ref int x, ref int y)
{
x = 1;
y = x;
}
public static void Main()
{
//out test
int a,b;
//out使用前,变量可以不赋值
outTest(out a, out b);
Console.WriteLine("a={0};b={1}",a,b);
int c=11,d=22;
outTest(out c, out d);
Console.WriteLine("c={0};d={1}",c,d);
//ref test
int m,n;
//refTest(ref m, ref n);
//上面这行会出错,ref使用前,变量必须赋值
int o=11,p=22;
refTest(ref o, ref p);
Console.WriteLine("o={0};p={1}",o,p);
}
}
原文出处:编程之道
C#中使用SQLServer的方法
c#.net中参数修饰符ref,out ,params得区别?
如何在C#中使用和修改注册表?
c# .net 的web中Target是如何使用的
C#的动态库如何在C++中使用
.net中使用c#对byte[]到字符串的转换
BIOS中REF to ACT/REF to REF是设置什么的?
C#中如何使用相对路径
C#中public class 和 class 的区别是什么?
.net 环境中,VC++和C#的接口
关于C#中string和Byte的转换问题
C#中关于Struct和Class的区别
在C#中使用DataGrid表格控件建立表格怎么样和oracle数据库连接
ref. no.是什么的缩写
关于三个代表重要思想和邓小平理论的小结
求学习心得和学习小结的资料
EXCEL合并单元格后的数据复制到另外一个工作表中出现#REF!是怎么回事?
C#中[STAThread]的作用
C#中substring 的用法
c#中double的用法
C#中dll的问题
C#中DropDownList的问题
在Microsoft Excel中#REF代表什么
在会计报表中#ref代表什么意思