C#基础:out和ref的区别

穿精又带淫゛_ 提交于 2020-04-03 14:21:38
public partial class 知识点 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    //调用方法之前,传递参数的时候,参数可以先不初始化
    //方法返回前,必须给out参数赋值,因为out参数值是不能通过实参传递到方法中的
    private int outFun(out Object a)
    {
        string s = "other opt";
        //a = Convert.ToInt32(a) + 1;    //编译不通过,Use of unassigned out parameter 'a'    

        a = 11;//方法返回前,必须给out参数赋值

        return 1;
    }

    //必须在调用前,给ref参数初始化
    //方法中不强制给ref参数赋值,因为实参已经通过ref参数传递进来,ref参数已经实例化过。
    private int refFun(ref Object b)
    {
        //string s = b.ToString();//运行异常,空引用

        //方法返回前,可以不给给ref参数赋值
        b = Convert.ToInt32(b) + 1;//ref参数,成功传递到被调用的方法

        return 1;
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        Object a;//可以先不初始化
        //Object a = 1;
        int returnVal = outFun(out a);
        Response.Write(returnVal+"\t"+a.ToString());

        //Object b;//Error    2    使用了未赋值的局部变量“b”    J:\学习项目\MianShiTi\Web\知识点.aspx.cs    38    20    Web(2)
        Object b = null;//必须在调用前,给ref参数初始化
        refFun(ref b);
        Response.Write("<br/> b:" + b);
    }

}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!