方法参数传递对象时声明选项的注意问题
2005-08-15 10:10
525 查看
方法参数可以有以下几种选项限定
ref
out
params
params没什么好说的,String.Format方法是个典型现成的例子;
ref?好像也没什么,不就是传递引用嘛,大家应该都知道,当传递对象参数时默认是传递引用的,是不是说当参数为对象时,写不写ref都是一样的,out好像没怎么用过,呵呵:
public class A
public class B
示例1:
A clsA=new A();
clsA.num=0;
B.SetA1(clsA);
MessageBox.Show(clsA.num.ToString()); //num是0还是1???
示例2:
A clsA = null;
B.SetA2(clsA);
MessageBox.Show(clsA.num.ToString()); //is work ?呵呵,当然不,注意clsA还是null
示例3:
//要想按示例2的方式调用,ref就有用了
A clsA = null;
B.SetA3(ref clsA);
MessageBox.Show(clsA.num.ToString()); // OK!
示例4:
//按示例2的方式调用,用out也可以,区别在哪呢?
A clsA; //呵呵,编译器是不会报告“使用了未赋值的局部变量”的,不过SetA4就有相应的要求了
B.SetA4(out clsA);
MessageBox.Show(clsA.num.ToString());
ref
out
params
params没什么好说的,String.Format方法是个典型现成的例子;
ref?好像也没什么,不就是传递引用嘛,大家应该都知道,当传递对象参数时默认是传递引用的,是不是说当参数为对象时,写不写ref都是一样的,out好像没怎么用过,呵呵:
public class A
public class B
示例1:
A clsA=new A();
clsA.num=0;
B.SetA1(clsA);
MessageBox.Show(clsA.num.ToString()); //num是0还是1???
示例2:
A clsA = null;
B.SetA2(clsA);
MessageBox.Show(clsA.num.ToString()); //is work ?呵呵,当然不,注意clsA还是null
示例3:
//要想按示例2的方式调用,ref就有用了
A clsA = null;
B.SetA3(ref clsA);
MessageBox.Show(clsA.num.ToString()); // OK!
示例4:
//按示例2的方式调用,用out也可以,区别在哪呢?
A clsA; //呵呵,编译器是不会报告“使用了未赋值的局部变量”的,不过SetA4就有相应的要求了
B.SetA4(out clsA);
MessageBox.Show(clsA.num.ToString());
相关文章推荐
- c# - 外部对象作为参数调用方法时需要注意的问题
- 1:HTML 中 onclick 触发函数 xxx(param) 要传递对象参数的解决方法 2:LocalStorage存储JSON对象的问题 3:ajax请求传送参数为对象问题
- asp.net mvc框架中,ajax传递json对象,并自动转换成参数对象的方法
- DLL中传递STL参数,vector对象作为dll参数传递等问题
- 关于C#函数对象参数传递的问题
- 在Java中方法参数的传递,对象是传递引用
- 对象作为方法的参数进行连续传递二
- 第02天OC语言(09):对象作为方法的参数连续传递下
- json传递中文乱码解决方法以及解决request.getParameter()获取参数为乱码的问题
- Java Socket 通信中传递Object对象注意的问题
- asp.net mvc框架中,ajax传递json对象,并自动转换成参数对象的方法
- js中特殊符号转义(base64作为参数和url作为参数传递要注意的问题)
- jquery easyui datagrid.load方法参数传递问题
- Java Socket 通信中传递Object对象注意的问题
- php 分页显示数据 post参数传递问题解决方法
- Java方法调用时传递参数问题
- [编写高质量代码:改善java程序的151个建议]建议53 注意方法中传递的参数要求
- pthread_create传递线程参数需要注意的问题
- Android使用Parcelable传递对象方法及注意事项
- Java可变参数方法重载时要注意的几个问题