c#方法的参数类型主要有哪三种类型?

c#方法的参数类型主要有哪三种类型?简述这三种类型的区别。

C#参数类型有四种:值类型 引用类型 输出类型 数组型参数C#参数类型(1):值参数所谓值参数,就是利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并将此拷贝传递给该方法,这样做的结果就是被调用的方法不会修改实参的值,保证了实际值的安全,在调用方法时,如果形参的类型时值类型的话,必须保证实参的类型也是值类型的数据.例子:public class MyClass { public MyClass() </SPAN> { // </SPAN> //TODO: 在此处添加构造函数逻辑 </SPAN> // </SPAN> } public void ChangeValue(string value) </SPAN> { value = "Value is Changed!"; </SPAN> } } -------------------------------------string value = "Value"; Response.Write(value+"
"); </SPAN> MyClass mc = new MyClass(); </SPAN>mc.ChangeValue(value); Response.Write(value); 效果:C#参数类型(2):引用参数使用ref关键字可以使参数按照引用传递.在需要传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中,若使用ref关键字,则在方法定义和调用方法时都必须显式使用ref关键字.注意ref的使用!例子:public class MyClass { public MyClass() </SPAN> { // </SPAN> //TODO: 在此处添加构造函数逻辑 </SPAN> // </SPAN> } public void ChangeValue(ref string value) </SPAN> { value = "Value is Changed!"; </SPAN> } } -----------------------------string value = "Value"; Response.Write(value+"
"); </SPAN> MyClass mc = new MyClass(); </SPAN>mc.ChangeValue(ref value); </SPAN> Response.Write(value); 效果: C#参数类型(3):输出参数使用out关键字来进行引用传递,这和ref关键字很累世,不同之处在于ref要求变量必须在传递之前就进行初始化,若使用out关键字,则方法定义和调用时都必须显式的使用out关键字.例子:public class MyClass { public MyClass() </SPAN> { // </SPAN> //TODO: 在此处添加构造函数逻辑 </SPAN> // </SPAN> } public void ChangeValue(out string value) </SPAN> { value = "Value is Changed!"; </SPAN> } } ---------------------------------string value ; MyClass mc = new MyClass(); </SPAN>mc.ChangeValue(out value); </SPAN> Response.Write(value); 效果:C#参数类型(4):数组型参数数组型参数就是声明params关键字,用于指定在参数数目可变处采用参数的方法参数.在方法声明中的params关键字之后不允许任何其他参数,并且在方法声明中只允许一个params关键字.例子:public class MyClass { public MyClass() </SPAN> { // </SPAN> //TODO: 在此处添加构造函数逻辑 </SPAN> // </SPAN> } public void ChangeValue(params string[] value) </SPAN> { foreach (string s in value) </SPAN> { HttpContext.Current.Response.Write(s + "
"); </SPAN> } } } ------------------------------------------string value1 = "Value1"; string value2 = "Value2"; </SPAN> MyClass mc = new MyClass(); </SPAN>mc.ChangeValue(value1, value2); 效果: 另:数组类型的参数:数组类型是引用类型的数据,所以也应归类于引用类型.public class MyClass { public MyClass() </SPAN> { // </SPAN> //TODO: 在此处添加构造函数逻辑 </SPAN> // </SPAN> } public void ChangeValue(string[] value) </SPAN> { value[0] = "This is Value0,Changed!"; </SPAN> } } ----------------------------------------------string[] value = { "Value1", "Value2" }; Response.Write(value[0] + "
"); </SPAN> MyClass mc = new MyClass(); </SPAN> mc.ChangeValue(value); Response.Write(value[0] + "
"); </SPAN></li>效果: 注意:ref和out的区别:传递到ref参数的参数必须最先初始化,而out的参数在传递之前不必初始化.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-14
C#中方法的参数有四种类型:
1. 值参数类型 (不加任何修饰符,是默认的类型)
2. 引用型参数 (以ref 修饰符声明)
3. 输出型参数 (以out 修饰符声明)
4. 数组型参数 (以params 修饰符声明)
---------------------------------------------------------------------

1、值类型是方法默认的参数类型,采用的是值拷贝的方式。简单讲就是传递参数到方法体内,js、asp、mvc等写函数有带参数的话,我们外部引用都会传递值进去。
function c(int c){
alert(c);
return c;

}
var x = c(5/*5就是值参数传递*/);

2和3、一般比较不常使用。
4、params 关键字可以指定在参数数目可变处采用参数的方法参数。也就是说。使用params可以自动把你传入的值按照规则转换为一个新建的数组。这个参数个数是可控的,像1不可控,写的方法是带几个参数。引用的时候就传递几个值进去
public static void p(params object[] list){
/*一般通过编列,计算结果*/
for(var i = 0; i < list.length; i++){
alert(list[i]);

}

}
object[] arr = new object[3] { 1, 'a', "k" };
p(arr);
第2个回答  2013-12-16
值参数:不含任何修饰符。方法中的形参是实参的一份拷贝,形参的改变不会影响到内存中实参的的值,实参是安全的。引用参数:以ref修饰符声明。传递的参数实际上是实参的指针,所以在方法中的操作都是直接对实参进行的,而不是复制一个值;可以利用这个方式在方法调用时双向传递参数;为了以ref方式使用参数,必须在方法声明和方法调用中都明确地指定ref关键字,并且实参变量在传递给方法前必须进行初始化。输出参数:以out修饰符声明。和ref类似,它也是直接对实参进行操作。在方法声明和方法调用时都必须明确地指定out关键字。out参数声明方式不要求变量传递给方法前进行初始化,因为它的含义只是用作输出目的。但是,在方法返回前,必须对out参数进行赋值。数组型参数:以params修饰符声明。params关键字用来声明可变长度的参数列表。方法声明中只能包含一个params参数。
第3个回答  2013-12-16
ref out params
相似回答