博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转] c# 的传递参数值传递与传递引用的区别,ref与out区别
阅读量:6429 次
发布时间:2019-06-23

本文共 1134 字,大约阅读时间需要 3 分钟。

 值传递 

 C#默认都是值传递的,就是复制变量的一个副本传递给方法,所以在退出方法后,对变量的修改无效。

但是要注意,当传递是引用类型时,因为引用类型是一个引用的地址,所以修改引用地址指向的对象时,一样会修改对象的值,这种现象不能当做引用传递

 引用传递

 引用传递是对象本身传递给方法,当在方法中对对象做修改时,退出方法后修改是有效的,在C#中引用传递需要在参数类型前加关键字 ref ,但是ref 的参数变量在使用前必须被初使化,可有时通过引用传递的变量初值是没意义的,这容易产生混淆,这时在C#中有另一关键字 out ,out 与 ref 关键字使用时效果一样,但是out关键字对变量可以不初使化,但是out关键字的变量在方法中必须给分配一个值,否则编译会不通过。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class 
Program
    
{
        
static 
void 
Main(
string
[] args)
        
{
            
var 
v = 
new 
Values();
            
int 
i = 10;
            
int 
j;
            
Console.WriteLine(v.a);
            
Method.Update(v, 
ref 
i, 
out 
j);
            
Console.WriteLine(
string
.Format(
"v.a={0}"
, v.a));
            
Console.WriteLine(
string
.Format(
"i={0}"
, i));
            
Console.WriteLine(
string
.Format(
"j={0}"
, j));
            
Console.ReadKey();
        
}
    
}
    
public 
class 
Values
    
{
        
public 
int 
a = 10;
    
}
    
public 
class 
Method
    
{
        
public 
static 
void 
Update(Values v, 
ref 
int 
i, 
out 
int 
j)
        
{
            
v.a = 20;
            
i = 20;
            
j = 20;
        
}
    
}

 输出值:10

v.a= 20

i=20

j=20

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5727424.html
,如需转载请自行联系原作者
你可能感兴趣的文章
靠能力赚大钱,是最最可笑的谎言
查看>>
WORD设置节起始页码后出现诡异隐藏页/跳页、节首页页面边框丢失
查看>>
团队文化之表扬和批评
查看>>
国家能源局:《电力企业网络与信息安全专项监管报告》
查看>>
Gartner:2012年SIEM(安全信息与事件管理)市场分析报告
查看>>
社交大革命,不可遏止的互联网春天
查看>>
也谈nginx的安全限制
查看>>
mongodb数据库问题三则
查看>>
【翻译】了解ASP.NET MVC的HTML助手
查看>>
老男孩:Linux运维岗位强于开发岗位的6点优势
查看>>
烂泥:mysql5.5多实例部署
查看>>
了解BYOD---工作方式的新时尚
查看>>
fastdfs binlog同步BUG
查看>>
基于DRBD构建高可用主从MySQL服务器
查看>>
MS UC 2013-0-虚拟机-标准化-部署-1-虚拟化-部署
查看>>
揭秘一个不起眼的微商新品牌,如何快速赢得客户信任?
查看>>
位图和SVG用法比较
查看>>
网络常见劫持杂谈
查看>>
Windows 7合理虚拟内存RAMDISK提升运行性能
查看>>
SharePoint Server 2013 之一:为SharePoint启航
查看>>