C#学习笔记-ref与out
来源:互联网 发布:泰安广电网络 编辑:程序博客网 时间:2024/05/21 15:44
1. 引用类型与值类型的对比:引用类型的值是对数据实际存储位置的引用。更改不了变量值(即引用地址本身)但可以更改引用所指向的数据。而值类型则更改的是变量副本,不会影响原始数据。数据类型中与地址相关的例如string、数组等为引用类型,直接与值相关的例如int等为值类型。
2. 引用参数ref:使参数以传引用的方式传递,是被调用的方法可以用新值来更新调用者的变量。ref参数只是传递的变量的别名,即只是为现有的变量分配了参数名,而不是创建新变量并将实参的值复制给它。就以下简单例子说明。
namespace ConsoleApp1
{
class Program
{
static void Main()
{
string one = "null";
string two = "Your name?";
System.Console.WriteLine("The old : {0} and {1}!!!",one ,two );
Swap(ref one , ref two);
System.Console.WriteLine("The new : {0} and {1}!!!", one, two);
test(one, two);
System.Console.WriteLine("The three : {0} and {1}!!!", one, two);
System.Console.ReadLine();
}
static void Swap(ref string x, ref string y)
{
string temp;
x = "Swap";
temp = x;
x = y;
y = temp;
}
static void test(string x, string y)
{
string temp;
x = "test";
temp = x;
x = y;
y = temp;
}
}
}
输出结果:
3. 输出参数out:以传引用的方式写入一个未初始化的局部变量(ref参数的变量需在被方法调用前赋值,而out参数的变量则不需要)以下两张图可以明显看出正误
4. 引用参数ref与输出参数out的区别
ref旨在改变变量的值,需要初值。而out旨在输出变量的值,不需要初值,需终值。
out:即使在调用之前,赋了初值,但在方法体中调用时值被清除,但因其旨在输出,故而需为其在方法体中赋终值。使方法体有多个返回值时可用(开发人员可以通过声明一个或多个out参数来克服方法只有一个返回类型的限定,例如如果方法要返回两个值,就可以使用以方法返回值形式正常返回一个值,另一个值写入别名变量并作为out参数传递。)。
- C#学习笔记-ref与out
- [学习笔记]C#中out与ref参数传递方式
- C#学习笔记之out、ref参数
- c# ref与out
- c# out与ref
- 【C#学习】ref 和 out
- C# ref与out区别
- C# ref与out区别
- C# ref与out区别
- C# ref与out区别
- C#中out 与ref
- C#中ref 与out
- C# ref与out区别
- C#中 out 与ref
- C# ref与out区别
- C# ref与out区别
- c#中ref与out
- C# ref 与 out 关键词
- idea 将项目上传到 github
- 一个自己写的网页计算器
- BZOJ 3438 浅谈DINIC及一点点优化卡时技巧
- 【APIO2014】Palindromes
- substr 和 substring的区别
- C#学习笔记-ref与out
- HDU 3572 网络流最大流 解题报告
- 6581 Number Triangle
- 史上最简单的手机app教程 基于Corona SDK(6)
- java如何从方法返回多个值
- 1930: 今年的第几天?
- 飞龙的程序员书单
- 求助,求助
- Linux中的生产者消费者模型