C#参数类型有四种:

值类型
引用类型
输出类型
数组型参数
C#参数类型(1):值参数
所谓值参数,就是利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并将此拷贝传递给该方法,这样做的结果就是被调用的方法不会修改实参的值,保证了实际值的安全,在调用方法时,如果形参的类型时值类型的话,必须保证实参的类型也是值类型的数据.
例子:
- public class MyClass
 - {
 - public MyClass()
 - {
 - //
 - //TODO: 在此处添加构造函数逻辑
 - //
 - }
 - public void ChangeValue(string value)
 - {
 - value = "Value is Changed!";
 - }
 - }
 
-------------------------------------
- string value = "Value";
 - Response.Write(value+"
 
");- MyClass mc = new MyClass();
 - mc.ChangeValue(value);
 - Response.Write(value);
 
效果:
C#参数类型(2):引用参数
使用ref关键字可以使参数按照引用传递.在需要传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中,若使用ref关键字,则在方法定义和调用方法时都必须显式使用ref关键字.
注意ref的使用!
例子:
- public class MyClass
 - {
 - public MyClass()
 - {
 - //
 - //TODO: 在此处添加构造函数逻辑
 - //
 - }
 - public void ChangeValue(ref string value)
 - {
 - value = "Value is Changed!";
 - }
 - }
 
-----------------------------
- string value = "Value";
 - Response.Write(value+"
 
");- MyClass mc = new MyClass();
 - mc.ChangeValue(ref value);
 - Response.Write(value);
 
效果:
C#参数类型(3):输出参数
使用out关键字来进行引用传递,这和ref关键字很累世,不同之处在于ref要求变量必须在传递之前就进行初始化,若使用out关键字,则方法定义和调用时都必须显式的使用out关键字.
例子:
- public class MyClass
 - {
 - public MyClass()
 - {
 - //
 - //TODO: 在此处添加构造函数逻辑
 - //
 - }
 - public void ChangeValue(out string value)
 - {
 - value = "Value is Changed!";
 - }
 - }
 
---------------------------------
- string value ;
 - MyClass mc = new MyClass();
 - mc.ChangeValue(out value);
 - Response.Write(value);
 
效果:
C#参数类型(4):数组型参数
数组型参数就是声明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 + "
 
");- }
 - }
 - }
 
------------------------------------------
- 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 = { "Value1", "Value2" };
 - Response.Write(value[0] + "
 
");- MyClass mc = new MyClass();
 - mc.ChangeValue(value);
 - Response.Write(value[0] + "
 
");
效果:
注意:
ref和out的区别:
传递到ref参数的参数必须***初始化,而out的参数在传递之前不必初始化.
四种C#参数类型就总结到这里,希望对大家有用。
【编辑推荐】
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号