c# ref out 的使用
来源:互联网 发布:mac地址烧录工具 编辑:程序博客网 时间:2024/05/16 08:47
在网上看了一些,些个小例子来说明下,大家就明白了。
c#的类型分为两种:值类型和引用类型:
值类型: 简单类型(包括int, long, double等)和结构(structs)都是值类型
引用类型:除了值类型以外的都是引用类型。
下面就两种类型的使用的作为参数传递的不同:
对于值类型:
如果不使用ref/out :则就是普通的值传递,在c,c++中类似比较普遍。
如果使用Ref/out ,则是按照引用传递,也就是说传递的是参数的引用,有点类型于c,c++中的指针变量。这样的话,在子函数中修改会改变被传入作为参数的值。
对于引用类型:
如果不使用ref/out,那么实际上也是拷贝传递,但是注意,由于引用类型本身的就是一个对象的引用,这样传递的结果就是传入的参数在传入的时候,拷贝生成一个引用,这个引用也是指向参数引用指向的对象的。也就意味着两个引用指向同一个对象。
如果使用Ref/out,那么实际上传递的是参数的引用,有点类型于c++中的指针的指针。很明显,实际上,还是同一个引用指向一个对象。
下面是一个简单的代码,可以解释在ref /out 引用类型的时候的是不同的:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
offbitmap = RefOut_Sample.Properties.Resources._1;
}
private void button1_Click(object sender, EventArgs e)
{
SetBitmap(offbitmap);
if (offbitmap != null)
{
MessageBox.Show("No Null");
}
else
{
MessageBox.Show("NULL");
}
}
private void button2_Click(object sender, EventArgs e)
{
SetRefBitmap(ref offbitmap);
if (offbitmap != null)
{
MessageBox.Show("No Null");
}
else
{
MessageBox.Show("NULL");
}
}
private Bitmap offbitmap = null;
private void SetBitmap(Bitmap bitmap)
{
bitmap = null;
}
private void SetRefBitmap(ref Bitmap bitmap)
{
bitmap = null;
}
}
我们两个打开,每次指向一次Button1,button2,可以看出得到的结果是不一样的。两种的不同,分别是使用在不同的时候。
- c# ref out 的使用
- c# out ref 使用
- C# ref和out参数的使用
- c# out、ref、params使用
- C#简单的分析 ref 与out的使用
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结(ZZ)
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- C#中ref和out的使用小结
- php验证email函数,js验证email函数
- 上帝派来和你吵架的人
- PPLive通过Windows 7 RC兼容性测试
- c++中预编译头文件问题
- vc 打印示例
- c# ref out 的使用
- T-SQL中存储过程输出参数的默认值有何用?
- linux-2.6.29.4和linux-2.6.30
- Spring 使用AOP导致IOC注入失败
- 实战 Groovy: Groovy:Java 程序员的 DSL
- 绿坝现漏洞政府天价难护航
- 错误 0xc0202049: 数据流任务: 无法在只读列“ID”中插入数据
- conio.h头文件
- 正则表达式学习参考