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#实现猜数字游戏具体代码,供大家参考,具体内容如下给定一个0-100的随机数字猜其大小题目样式:电脑产生一个0到100之间的随机数字,并且...
[阅读全文]
-
-
C# 可空类型的具体使用
在项目中我们经常会遇到可为空类型,那么到底什么是可为空类型呢?下面我们将从4个方面为大家剖析。1、可空类型基础知识顾名思义,可空类型指的就是某个对象类型可以为空...
[阅读全文]
-
-
-
C#实现猜数字小游戏
本文实例为大家分享了c#实现猜数字小游戏的具体代码,供大家参考,具体内容如下效果如图:代码:using system;using system.collecti...
[阅读全文]
-
-
C#实现简单俄罗斯方块
最近在看《.net游戏编程入门经典 c#篇》 第一章介绍了如何制作俄罗斯方块,自己试了试按照书上的步骤,可算是完成了。于是写下这篇文章留作纪念。1.类的设计在充...
[阅读全文]
-
网友评论