手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#: 引用变量与数值变量的区别
C#: 引用变量与数值变量的区别
摘要:1.值参数当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法。被调用的方法不传经修改内存中实参的值,所以使用值...

1. 值参数

当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法。被调用的方法不传经修改内存中实参的值,所以使用值参数时,可以保证实际值是安全的。在调用方法时,如果形式化参数的类型是值参数的话,调用的实参的值必须保证是正确的值表达式。在下面的例子中,程序员并没有实现他希望交换值的目的:

复制代码 代码如下:

using System;

class Test

{

static void Swap(int x,int y){

int temp=x;

x=y;

y=temp;

}

static void Main(){

int i=1,j=2;

Swap(i,j);

Console.WriteLine("i={0},j={1}",i,j);

}

}

编译上述代码,程序将输出:

i=1,j=2

2. 引用型参数

和值参不同的是,引用型参数并不开辟新的内存区域。当利用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递给方法。

在方法中,引用型参数通常已经初始化。再看下面的例子。

复制代码 代码如下:

using System;

class Test

{

static void Swap(ref int x,ref int y){

int temp=x;

x=y;

y=temp;

}

static void Main(){

int i=1,j=2;

Swap(ref i,ref j);

Console.WriteLine("i={0},j={1}",i,j);

}

}

编译上述代码,程序将输出:

i=2,j=1

Main函数中调用了Swap函数,x代表i,y代表j。这样,调用成功地实现了i和j的值交换。

在方法中使用引用型参数,会经常可能导致多个变量名指向同一处内存地址。见示例:

复制代码 代码如下:

class A

{

string s;

void F(ref string a,ref string b){

s="One";

a="Two";

b="Three";

}

void G(){

F(ref s,ref s);

}

}

在方法G对F的调用过程中,s的引用被同时传递给了a和b。此时,s,a,b同时指向了同一块内存区域。

【C#: 引用变量与数值变量的区别】相关文章:

在c#中把字符串转为变量名并获取变量值的小例子

深入委托与多播委托的详解

C#枚举数值与名称的转换实例分享

C# 中将数值型数据转换为字节数组的方法

c# 托盘双击不触发单击事件的实现方法

c# Rank属性与GetUpperBound方法的深入分析

C# 合并GriewView相同列的小例子

Http上传与Ftp上传的区别详解

C#简单获取时间差的小例子

c#实现隐藏与显示任务栏的方法详解

精品推荐
分类导航