ref 和 out 的用法和区别以及params用法

口诀:ref有进有出,out只出不进!

在C#中既可以通过值传递也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数,可给相应的参数使用ref或者out关键字。其作用很像C中的指针。

ref的用法:

 1 namespace ConsoleApplicationTest20160125
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             string a="初始化!";
 8             refMethod(ref a);
 9             Console.WriteLine("ref关键字的用法测试!\t");
10             Console.WriteLine("结果:a="+a);
11             Console.ReadKey();
12          }
13
14         private static void refMethod(ref string a)
15         {
16             a = "执行了ref!";
17         }
18
19
20     }

运行结果:

ref关键字的用法测试!
结果:a=执行了ref!

out的用法:

 1 namespace ConsoleApplicationTest20160125
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             string b;//无需初始化
 8             outMethod(out b);
 9             Console.WriteLine("out关键字的用法测试!\t");
10             Console.WriteLine("结果:b=" + b);
11             Console.ReadKey();
12
13         }
14
15         private static void outMethod(out string b)
16         {
17             b = "执行了out!";
18         }
19     }
20 }

运行结果:
out关键字的用法测试
结果:b=执行了out!

时间: 2024-08-10 17:20:07

ref 和 out 的用法和区别以及params用法的相关文章

ref和out的用法和区别。

关于ref和out的用法和区别在网上已经有很多的解释,这里只不过是写下对于我而说比较容易理解的解释. ref和out都可以用来在函数中返回数据,类似于c++中指针. 参数 Ref Out 是否一定需要初始化 是 否 机制 传递参数的地址,例如声明了int i=0; i是存储在内存堆的一个地址0x000001那么传递的便是这个地址0x000001 不需要初始化,也就是没有为定义的变量开辟存储空间.在函数体中定义,故只是返回值.(如果之前有定义,则在函数体中清空后再赋值) 一般用途 调用的方法修改传

out和ref的用法和区别

out和ref的用法和区别 函数参数默认是值传递,也就是“复制一份” 看个栗子: static void Main(string[] args) { int age = 10; IncAge(age); Console.WriteLine(age);//结果是10,因为函数参数默认是值传递,IncAge()对外面这个age没有影响 Console.ReadKey(); } static void IncAge(int age) { age++; } ref(reference:引用) ref必须

oracle中delete drop truncate的用法和区别

数据库的运维中,经常会遇到delete drop truncate的操作,那么如何去把握它们的用法和区别呢? 比如当数据库空间爆满,已经增长到存储空间单个存储文件的最大值32G.你需要通过一些办法释放掉表空间或者扩容表空间来解决问题. 一般当系统中大量使用分区表,而针对分区表清除数据,是不会释放表空间的,必须把分区drop掉,才会释放空间. 下面我们具体了解一下这三个命令: 一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在r

总结oninput、onchange与onpropertychange事件的用法和区别 书写搜索的神奇代码

总结oninput.onchange与onpropertychange事件的用法和区别 最近手机开发一个模糊搜索的功能组建,在网上就找到这篇文章! 前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验.比如onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效:而onkeyd

Java中super和this的用法和区别

许多同学在学习Java时分不清楚this和super的用法和区别,今天偶然发现一片加精的博文,看完内容准备自己也写下来积累一下 1.如果想在子类的构造方法中调用父类的构造方法,必须在子类的构造方法中使用super();且必须将其放在首句 public class L1106Demo06 { public static void main(String[] args) { lake M=new lake(); } } /*super方法的用法1. * 在子类的构造方法中若果要想要调用父类的构造方法

oninput,onpropertychange,onchange的用法和区别

1.前言 由于工作需要,需实现一个类似于微博输入框的功能,在用户动态输入文字的时候,修改提示"您还可以输入XX字".如下图所示: 因此,稍微研究了一下oninput,onpropertychange,onchange的区别和用法,以及onpropertychange在ie浏览器下的一个bug. 2.oninput,onpropertychange,onchange的用法 l          onchange触发事件必须满足两个条件: a)当前对象属性改变,并且是由键盘或鼠标事件激发的

ref和out的使用与区别

区别: ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量.它们的区别是: 1.使用ref型参数时,传入的参数必须先被初始化.对out而言,必须在方法中对其完成初始化. 2.使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字.以满足匹配. 3.out适合用在需要retrun多

Javascript中call方法和apply方法用法和区别

第一次在博客园上面写博客,知识因为看书的时候发现了一些有意思的知识,顺便查了一下资料,就发到博客上来了,希望对大家有点帮助. 连续几天阅读<javascript高级程序设计>这本书了,逐渐发现了以前很多自己完全没有用过甚至见过的神奇知识点.今天在阅读到有关函数的属性和方法的时候,略感高级,于是乎,查阅了不少他人的博客,在此总结一下这两个方法的以下几个方面: 1.call()和apply()的作用和用法 2.什么时候用apply(),什么时候用call() 书上提到,每个函数都包含两个非继承而来

Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别

Java线程中sleep().wait()和notify()和notifyAll().suspend和resume().yield().join().interrupt()的用法和区别 从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列).并且在某一时刻cpu只为ready queue中位于队列头部的线程服务. 但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield. 或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sleep.