ref 和 out

两者都是按地址传递的,使用后都将改变原来的数值。很多人在论坛上解释说out是按数值传递,是错误的。简单的测试后可以知道out使用也能改变数值的,所以肯定是按照地址传递的。其次:rel可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,rel是有进有出,out是只出不进
时间: 2024-11-05 20:43:44

ref 和 out的相关文章

ref和out的用法和区别。

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

Oracle PLSQL Demo - 16.弱类型REF游标[没有指定查询类型,已指定返回类型]

declare Type ref_cur_variable IS REF cursor; cur_variable ref_cur_variable; rec_emp scott.emp%RowType; v_sql varchar2(100) := 'select * from scott.emp t'; begin Open cur_variable For v_sql; Loop fetch cur_variable InTo rec_emp; Exit When cur_variable

ref in out params

参数类型可以分为ref.in.out这三种,默认的都是in. 通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量.它们的区别是: 1.把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数.在函数使用out参数时,必须把它看成是尚未赋值,调用代码可以把已赋值的变量用作out参数,但存储在该变量中的值会在函数执行时丢失. 以下是关于out使用的一个示例 using System; using System.C

[当我在研究Cocos-2dx的源代码时,我在想什么]-Ref类,一切的起源

[名词解释] 引用计数:引用计数是现代内存管理中常常使用到的一个概念.它的基本思想是通过计数方式实现多个不同对象同一时候引用一个共享对象,详细地讲,当创建一个对象的实例并在堆上分配内存时,对象的引用计数为1,在其它对象中须要持有这个共享对象时.须要把共享对象的引用计数加1.当其它对象不再持有该共享对象时,共享对象的引用计数减1,当共享对象的引用计数变成0时.对象的内存会被马上释放.(部分截取自维基百科). 比較著名的使用引用计数的有COM和Objective-C,在COM的IUnknow接口中定

C#中三个关键字params,Ref,out

关于这三个关键字之前可以研究一下原本的一些操作 using System; using System.Collections.Generic; using System.Text; namespace ParamsRefOut { class Program { static void ChangeValue(int i) { i=5; Console.WriteLine("The ChangeValue method changed the value "+i.ToString())

ref、out 修饰符

ref参数和out参数类似,除了: 1.ref参数要求在传入函数之前赋值,而out参数不用 2.out参数必须在函数结束之前被赋值,而ref参数不用 ref传递参数 若int x;则报错 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 int x=0; 6 Foo(ref x); 7 Console.WriteLine(x);//1 8 Console.ReadKey(); 9 } 10 static void Foo(re

ref out params

ref侧重于将一个值传入函数进行处理,再将处理后的值返还回去:参数是在函数外进行赋值.--将值类型传递转换成引用类型传递 out侧重于函数需要返回多个值:参数是在函数内进行赋值,函数外只进行声明数据类型. params可变参数 out实例: 1 using System; 2 using System.Collections.Generic; 3 using System.Diagnostics; 4 using System.IO; 5 using System.Linq; 6 using S

C# 基础(一) 访问修饰符、ref与out、标志枚举等等

C# 基础(一) 访问修饰符.ref与out.标志枚举等等 一.访问修饰符 在C#中的访问修饰符有:private.protected.internal.public public:公共类型,同一程序集或其他程序集都可以访问此成员 private:私有类型,同一类里或结构里才可以访问此成员 protected:保护类型,同一类里或者派生类中才可以访问此成员 internal:内部类型,只有在同一程序集才可以访问此成员 访问性不一致:子类的访问权限不能比父类高.防止暴露父类的信息.. 二.stat

C#基础-out与ref字段

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { string outString = "This is the outString value"; Console.WriteLine(outString

what' s ruby?(ref: ruby编程语言)

q1: irb(main):001:0> tmp=(1..10).to_a => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] irb(main):002:0> tmp.each.class => Enumerator irb(main):003:0> tmp.select.class => Enumerator irb(main):004:0> tmp.map.class => Enumerator irb(main):005:0>