惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
B
Blog
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
爱范儿
爱范儿
博客园_首页
博客园 - 聂微东
量子位
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
F
Fortinet All Blogs
The Cloudflare Blog
T
Tailwind CSS Blog
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
腾讯CDC

博客园 - 颜昌钢

怎样做好一个项目经理? ICollection 与 IList 区别 oracle 数据库跨库查询方法 SetTimeOut 与 SetInterval 区别 - 颜昌钢 内存释放 机制 remoting 学习整理 wpf windows 放大缩小 疑问?? - 颜昌钢 GC 资源 回收 WPF中代码画箭头 DataTrigger 以及 EnterActions 和ExitActions 学习笔记 - 颜昌钢 WPF xaml文件中使用大括号{} - 颜昌钢 - 博客园 WPF下的地图解决方案 关于WPF的Binding 的 ConverterParameter 参数的动态设置 关于 项目 投标相关文档 服务器计时器、Windows 计时器和线程计时器 wpf小控件 集合 仪表盘等 wpf button 事件的触发顺序 - 颜昌钢 c# 插件 体系 一个类似于 splittercontainer 控件的控件
方法参数 Ref 与 引用类型
颜昌钢 · 2010-01-18 · via 博客园 - 颜昌钢

       首先,这篇文章,只是无聊的产物,没什么具体的理论解释。

       大家应该都明白,方法的参数前面 加上ref或者out的作用,但是,引用类型的参数前面,添不添加ref,有什么区别呢?

如下是一段简单的代码。

代码

 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             test a = new test() { ID = 1 };
 6 
 7             test c = new test();
 8 
 9             TestRef b = new TestRef();
10             b.Test(ref a);
11 
12             b.Test(c);
13 
14             Console.WriteLine(string.Format(@" ref value={0}", a.ID));
15             Console.WriteLine(string.Format(@" not ref value={0}", c.ID));
16             Console.ReadLine();
17         }
18     }
19 
20     public class test
21     {
22         public int ID { getset; }
23     }
24 
25     public class TestRef
26     {
27         public void Test(ref test test)
28         {
29             test.ID = 2;
30 
31             Console.WriteLine(string.Format(@" ref value={0}", test.ID));
32             //test = new test() { ID = 5 };
33         }
34 
35         public void Test(test test)
36         {
37             test.ID = 3;
38             Console.WriteLine(string.Format(@" not ref value={0}", test.ID));
39             //test = new test() { ID = 4 };
40         }
41     }

运行下,相信结果都是大家所想的。

但是,去掉代码里面注销掉的那两行,结果呢?