using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//对于值型变量作为方法参数时,可以有三种情况:
//1.没有ref和out参数 (直接传值,不能改变实参)
//2.使用ref参数 (引用传递,输入,可以改变实参)
//3.使用out参数 (引用传递,输出,可以改变实参)
//4.ref和out的区别在于一个需要初始化,另一个不需要...
Response.Write("params参数");
this.Add(1, "afa", "bb", 3);
this.Add("---
");
string str = "a";
this.Add(ref str);
Response.Write("ref参数");
Response.Write("str: " + str + "
");
int num;
this.Add(out num);
Response.Write("out参数");
Response.Write("num: " + num);
}
/// <summary></summary>
/// 数组型参数:以params修饰符声明。params关键字用来声明可变长度的参数列表。方法声明中只能包含一个params参数。
/// 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。
///
///
private void Add(params object[] list)
{
for (int i = 0; i < list.Length; i++)
{
Response.Write(list[i].ToString() + "
");
}
}
/// <summary></summary>
/// 引用参数:以ref修饰符声明。传递的参数实际上是实参的指针,所以在方法中的操作都是直接对实参进行的,而不是复制一个值;可以利用这个方式在方法调用时双向传递参数;为了以ref方式使用参数,必须在方法声明和方法调用中都明确地指定ref关键字,并且实参变量在传递给方法前必须进行初始化。
///
///
/// <returns></returns>
private void Add(ref string str)
{
str = "hello";
}
/// <summary></summary>
/// 输出参数:以out修饰符声明。和ref类似,它也是直接对实参进行操作。在方法声明和方法调用时都必须明确地指定out关键字。out参数声明方式不要求变量传递给方法前进行初始化,因为它的含义只是用作输出目的。但是,在方法返回前,必须对out参数进行赋值。
///
/// <returns></returns>
private void Add(out int num)
{
num = 100;
}
}