ZKX's LAB

cout和ref 引用类型

2020-07-16知识5
在Java中没有C#的delegate类型,ref和out类型的参数,那在Java中如何变通地实现相同功能 delegate你可以用相关对象的addXXXListener实现,如果没有你想要的listener,你可以自己写一个,然后在set方法里面通知这些listener就可以了,比方你要监视Obj的属性变化,可以这样,先定义一个借口PropertyChangeListener{public void execute();} class Obj{ Listlisteners;void firePropertyChanged(PropertyChangeEvent e){ for(PropertyChangeListener l:listeners){ l.execute(e);} } void addPropertyChangeListener(PropertyChangeListener l){ listeners.add(l);} } ref就是传引用,随便一个对象就可以传引用,除了String,还有out,你直接在函数里面修改传引用的参数就ok 在C#中关于传递参数ref和out分别有什么区别 ref(C# 参考) ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。例如: class RefExample { static void Method(ref int i) { i=44;} static void Main() { int val=0;Method(ref val);val is now 44 } } 传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。(请参见 out。尽管 ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码: class CS0663_Example { compiler error CS0663:\"cannot define overloaded methods that differ only on ref and out public void SampleMethod(ref int i){ } public void SampleMethod(out int i){ } } 但是,如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示: class RefOutOverloadExample { public ... ref和out的区别 out与ref区别:2113 1、使用ref型参数时,传入5261的参数必须先被初始化,对out而言,必须在4102方法中对其完成初始化。2、使用1653ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字,以满足匹配。3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。4、ref传进去的参数在函数内部可以直接使用,而out不可。5、系统对ref的限制是更少一些的。6、若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法,ref 参数的值被传递到 ref 参数。7、当希望方法返回多个值时,声明 out 方法非常有用;使用 out 参数的方法仍然可以返回一个值。扩展资料: out:标识一个参数值会受影响的参数,但在传入方法时,该参数无需先初始化。ref:标识一个参数值可能会受影响的参数。C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的... c# ref与c语言的指针能互传吗 严格来说不可以!这里边有几个错误的理解需要纠正一下:来格来说int是属于.net的,int是Int32的别名,也就是32bits的数字,当然,short是Int16的别名,long是Int64的别名,如果说C#语言的话,可以说Int32,一般情况下我们再不区分int与Int32的区别。而C语言中的int却并不是32bits数,而是16bit数!换句话来说,如果是平台调用(PInovke)的话,一般我们用C#中的short来接C语言中的int!当然,如果指针类似值的话,一定要了解平台调用部分的数据封送!数据封送部分介绍了平台之间数据如果对接的,这部分的知识一定要理解。但是有时只有一个参数时,大多数我们会使用C#语言中自动转换的方式,比如使用C#中int去接C语言中int中的值是没有问题的(C#会把short自动转换为int). 但是,对于结构(struct)之类的,由于其中包含多个值,所以对于对象进行平台封送时,一定要使用相应的形式(其实是内存数据的重新包装而已),如果要使用特定的数据形式,一定要使用特性化编程中的位节说明来说明字体的长度(比如在接值的时候string接值时就必段说明内存段大小)。第二个问题是关于ref或out的,ref只是传址引用,并不是指针(一定一定不要用指针这个词,因为在.net中除值类型... 如何理解用out或ref修饰的引用类型的参数(不是用ref out 修饰值类型)? out或ref修饰引用类型可以认为是传递了引用地址的地址。比如: int MaxVal(ref int[]maxValIndices) { maxValIndices[0]=5;对于这个加不加无所谓 maxValIndices=new int[]{};对于这个,如果想影响原数组必须加Ref 或者Out } main() { int[]aa=new int[]{1,2,3};MaxVal(aa);}假如不加out 因为你里面是new了一个新数组,意味着产生了一个新的引用地址,那么外面的数组是不能随之而改变的。 C#中值类型参数与引用类型参数的区别!??如 Public static void AddOne(ref int a) { a++ } 值类型 传递给函数是一个具体指引用类型 传递给函数的是一个地址如果想在函数中改变外面的值,必须用引用才可以 REF表示将参数作为引用类型传入所以即使它是值类型(比如INT型),也视作引用,函数中的变化会作用到其本身比如 int a=8;AddOne(ref a);则a的值为9. 如果是AddOne(a);则a的值不变 C语言中out和ref的区别是什么? ref:相当于c语言的引用参数 实参和形参一起变。out:多用于输出参数 就是在return之前必须给out标示的参数赋值。C语言的基本特性: 1、C是高级语言:它把高级语言的基本... C#中ref引用传参怎么用? 这么和你说,假如你在果园里,你跟果农说要吃苹果,这时候果农也许会给你一个现成的苹果,也许会告诉你那边有个苹果树,自己去摘!在到程序里,你的参数如果是string str,那么你指是想得到一个string类型的str;就是苹果但如果你这么写 ref string str,那么你是想得到一个string的地址,注意这里是要地址,也就是苹果树。public void faction(string str);调用的时候faction(“123”);就完了;public void faction(ref string str);调用的时候你要faction(ref var);这里的var是一个string类型的变量,比如string var=18;用ref你首先得到了var这个变量,然后你就可以用18这个值了,就这意思。区别就在这,一个要值,一个要地址! 关于C#中给引用类型加上“REF”后有什么不同 ref关键字传递栈地址 引用类型传递的是堆地址 如果你把ref 使用到引用类型上那么就会把引用类型的地址传递过去 而不是把引用类型应用的堆地址传递过去 引用类型:他的引用是... C#值类型和引用类型有什么不同? 值类型和引用类型有很多不同。下面列一些马上可以想到的。1、值类型存储在栈内存或堆内存之中,而引用类…

#初始化#c##引用类型#string

随机阅读

qrcode
访问手机版