out 与ref参数

来看定义:

1、ref的使用:使用ref进行参数的传递时,该参数在创建时,必须设置其初始值,且ref侧重于修改;

  2、out的使用:采用out参数传递时,该参数在创建时,可以不设置初始值,但是在方法中必须初始化,out侧重于输出;

  注释:当希望方法返回多个值时,可以用out,并且一个方法中的参数可以有一个或多个out参数;使用out参数,必须将参数作为out参数显式传递到方法中,但是out 参数的值不会被传递到 方法中,且属性不是变量,不能作为 out 参数传递。

     ref是有进有出,而out是只出不进。

有点看不懂吧

我也看不太懂,什么初值不初值的,对于我们这些刚刚接触参数的小白来说,不好理解。好吧,看个例子:

 private List<ManagerInfo> SelectManager(out List<ManagerInfo> list)
        {
            manager.mid = Convert.ToInt32(txtMId.Text);
            return list = mfacade.SelectManagerNumber(manager);
        }

//在其他方法体里调用此方法的代码
        ……
        SelectManager(out List<ManagerInfo> list);
        if (list.Count > 0)
        {
            //员工号存在
            lblmsb4.Visible = true;
            txtMId.Text = "";
            txtMId.Focus();
        }
        ……

使用out可以把方法体里的某个值传出去供其他方法使用。

 public void Tupian(ref PictureBox pic)
        {
            #region 选择图片并显示到图片框
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP|*.png|*.png";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                //选图片
                string filePath = ofd.FileName; //图片路径
                FileStream fs = new FileStream(filePath, FileMode.Open);
                //将图片转化为二进制
                byte[] imageBytes = new byte[fs.Length];
                BinaryReader br = new BinaryReader(fs);
                imageBytes = br.ReadBytes(Convert.ToInt32(fs.Length)); //图片转换成二进制
                //将二进制数据类型的图片导入图片框
                MemoryStream ms = new MemoryStream(imageBytes);
                Bitmap bmp = new Bitmap(ms);


                pic.Image = bmp;


                #endregion
                //更新图片到数据库
                string field = "picture";
                byte[] value = imageBytes;
                bool result = goodsfacade.UpdateGoods(goods, field, value);

            }

        }

使用ref可以在调用方法的过程中给参数赋值,在上面方法中用ref可以先不指明具体的picturebox,而是调用方法时在给定,这样可以实现一个方法的多次使用。

当然这两个例子这样写不太好,为了说明,用的这种写法

你看上面方法像不像一个数据工厂:ref是原材料,是需要加工的数据,out是产品,是经加工并要传出去的数据。

其实说到底,参数是为了使方法变灵活用的,有时只用单纯的参数在语法上是受限制的,这时就要用out、ref两个规则来辅助实现传值了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值