当前位置:  编程技术>.net/c#/asp.net

C#: 引用变量与数值变量的区别

    来源: 互联网  发布时间:2014-10-17

    本文导语:  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同时指向了同一块内存区域。

    
 
 

您可能感兴趣的文章:

  • python共享引用(多个变量引用)示例代码
  • 关于环境变量的设置和引用
  • 怎么引用SESSION变量的值?
  • linux 如何在两个.c文件中引用对方的变量。
  • 模块编程中对内核全局变量引用的问题
  • 在JSP代码中怎么引用javascript中的变量???急!!!
  • 菜鸟问题--怎么引用这个变量?
  • Makefile中引用变量时大括号和小括号有啥区别?
  • 如何引用内核模块中的变量
  • 如何在html标签的属性里引用一个jsp变量
  • 求助,JSP与Servlet之间可以引用全局变量吗(Session范围的)?
  • PHP变量的定义、可变变量、变量引用、销毁方法
  • 在静态上下文中不能引用非静态变量 this WindowAdapter e=new MyAdapter();why?
  • 浅谈PHP变量作用域以及地址引用问题
  • To masterz():本人愚笨,向你再请教一个问题 在静态上下文中不能引用非静态变量 this
  • PHP变量作用域与地址引用问题解析
  • Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
  • c/c++开源软件 iis7站长之家
  • c# 调用Surfer软件,添加引用的具体操作方法
  • 将ocx文件转换成C#程序引用的DLL文件的办法
  • c#网站WebConfig中域名引用示例介绍
  • c# 引用类型和值类型
  • c# 引用类型构造器
  • C#引用类型和值类型的介绍与实例
  • C#中值类型与引用类型作为参数传递时的区别
  • c#值类型和引用类型使用示例
  • c#字符串值类型与引用类型比较示例
  • c#值类型与引用类型的区别
  • c#中xml文档注释编译dll引用到其它项目示例
  • C#跨窗体操作(引用传递) 实例代码
  • c#编写webservice服务引用实例分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • shell引用其他文件中的数值
  • HTML5 <blockquote> 标签(定义引用)详细介绍及举例说明
  • Java中弱引用和软引用的区别以及虚引用和强引用介绍
  • JQuery 在线引用及测试引用是否成功
  • c++ const引用与非const引用介绍
  • “当某个实例不再被任何对象引用时就会被垃圾回收机制回收”,那么怎样才算是不被任何对象引用呢?
  • java的引用类型的详细介绍
  • 解析Android开发优化之:软引用与弱引用的应用
  • 如何在一个package中引用另一个package中的类?
  • JSP引用JAVABEAN的问题
  • 关于在内核空间和用户空间引用一个空指针的后果很原因
  • grep 后向引用问题
  • 我的Jbuilder怎么引用我自己编写的Class文件?
  • 在aspx页面引用html页的写法
  • 没人解决吗?我在一个包中如何引用一个未打包的Class?
  • 用户定义类引用??
  • 一个简单的引用的问题
  • EJB间如何引用?
  • iso的头文件怎么在linux下引用啊
  • 请问在C文件中如何引用 C++ 生成库?
  • 引用的奇怪问题
  • kdevelop lib库引用问题(急)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3