zoukankan      html  css  js  c++  java
  • C#基础:out和ref的区别

    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+"	"+a.ToString());
    
            //Object b;//Error    2    使用了未赋值的局部变量“b”    J:学习项目MianShiTiWeb知识点.aspx.cs    38    20    Web(2)
            Object b = null;//必须在调用前,给ref参数初始化
            refFun(ref b);
            Response.Write("<br/> b:" + b);
        }
    
    }
  • 相关阅读:
    Invalid bound statement (not found)解决方法
    MySQL的sum()函数
    关于Mybatis的java.lang.UnsupportedOperationException异常处理
    博客迁移
    Building Blog(个性化博客)2
    走一波服务器
    JZ高中OJ 1036. [SCOI2009]迷路
    JZ初中OJ 2296. [noip普及组2]神殿
    JZ初中OJ 2295. [noip普及组2]栈
    JZ初中OJ 2298. [noip普及组2]异或
  • 原文地址:https://www.cnblogs.com/sen068/p/5099299.html
Copyright © 2011-2022 走看看