首页 > 代码库 > C#方法的参数类型
C#方法的参数类型
在C#中,方法的参数类型有四种:
- 值类型
- 引用类型
- 输出类型
- 数组型参数
值参数:
所谓值参数,就是利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并将此拷贝传递给该方法,这样做的结果就是被调用的方法不会修改实参的值,保证了实际值的安全,在调用方法时,如果形参的类型时值类型的话,必须保证实参的类型也是值类型的数据.
例子:
public class MyClass{ public MyClass() { // //TODO: 在此处添加构造函数逻辑 // } public void ChangeValue(string value) { value = "http://www.mamicode.com/Value is Changed!"; }}-------------------------------------string value = "http://www.mamicode.com/Value";Response.Write(value+"<br/>");MyClass mc = new MyClass();mc.ChangeValue(value);Response.Write(value);
效果:
引用参数:
使用ref关键字可以使参数按照引用传递.在需要传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中,若使用ref关键字,则在方法定义和调用方法时都必须显式使用ref关键字.
注意ref的使用!
例子:
public class MyClass{ public MyClass() { // //TODO: 在此处添加构造函数逻辑 // } public void ChangeValue(ref string value) { value = "http://www.mamicode.com/Value is Changed!"; }}----------------------------- string value = "http://www.mamicode.com/Value"; Response.Write(value+"<br/>"); MyClass mc = new MyClass(); mc.ChangeValue(ref value); Response.Write(value);
效果:
输出参数:
使用out关键字来进行引用传递,这和ref关键字很累世,不同之处在于ref要求变量必须在传递之前就进行初始化,若使用out关键字,则方法定义和调用时都必须显式的使用out关键字.
例子:
public class MyClass{ public MyClass() { // //TODO: 在此处添加构造函数逻辑 // } public void ChangeValue(out string value) { value = "http://www.mamicode.com/Value is Changed!"; }}--------------------------------- string value ; MyClass mc = new MyClass(); mc.ChangeValue(out value); Response.Write(value);
效果:
数组型参数:
数组型参数就是声明params关键字,用于指定在参数数目可变处采用参数的方法参数.
在方法声明中的params关键字之后不允许任何其他参数,并且在方法声明中只允许一个params关键字.
例子:
public class MyClass{ public MyClass() { // //TODO: 在此处添加构造函数逻辑 // } public void ChangeValue(params string[] value) { foreach (string s in value) { HttpContext.Current.Response.Write(s + "<br/>"); } }}------------------------------------------ string value1 = "Value1"; string value2 = "Value2"; MyClass mc = new MyClass(); mc.ChangeValue(value1, value2);
效果:
另:
数组类型的参数:
数组类型是引用类型的数据,所以也应归类于引用类型.
public class MyClass{ public MyClass() { // //TODO: 在此处添加构造函数逻辑 // } public void ChangeValue(string[] value) { value[0] = "This is Value0,Changed!"; }}---------------------------------------------- string[] value = http://www.mamicode.com/{"Value1", "Value2" }; Response.Write(value[0] + "<br/>"); MyClass mc = new MyClass(); mc.ChangeValue(value); Response.Write(value[0] + "<br/>");
效果:
注意:
ref和out的区别:(ref初始化)
传递到ref参数的参数必须最先初始化,而out的参数在传递之前不必初始化.
http://www.cnblogs.com/oneword/archive/2009/08/19/1549464.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。