[Day18]C# 鸡础观念- 回头吧!孩子~ref 与 out 参数修饰词

鲑鱼出生後会往下游生活,
到了产卵季节,会逆游而上,
回到最初的起点,进行产卵产卵,
C#也有像鲑鱼一样的行为,
一个参数尽方法进行加工,
加工完成後就会回家了

ref 关键字/images/emoticon/emoticon52.gif

  • 上回我们说好了,参数有分为传值与传址
  • ref 关键字的用途就是将参数指定为传址
  • 因此做任何修改都会影响到原参数

范例:我们来让一只鸡进化吧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            //宣告一只鸡
            string chicken = "一只鸡";
            Console.WriteLine("小时候 : " + chicken);

            //呼叫成长方法
            ChangAChicken(ref chicken);

            Console.WriteLine("漂泊完回家後的鸡 : " + chicken);
            Console.ReadKey();
        }
        //宣告小鸡长大的方法,这边使用常数方法,不需要做return
        static void ChangAChicken(ref string newChicken)
        {
            //让鸡进化
            newChicken = "孤独" + newChicken;
        }
    }
  }

结果:

小时候 : 一只鸡
漂泊完回家後的鸡 : 孤独一只鸡

out 参数修饰词

  • Out的存在是为了解决一个方法只能回传一个值
  • 但使用Out就能回来多个值
  • Out的参数,使用前是不能赋值的,即使赋值也会被忽略

范例:我们知道一个圆的半径,求它的面积与圆周长吧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            //宣告圆半径
            double x = 4;
            Console.WriteLine("圆半径 : " + x);

            //宣告圆周长
            double y;

            //呼叫计算方法
            double area = GetArea(x, out y);

            Console.WriteLine("圆周长 = " + y);
            Console.WriteLine("圆面积 = " + area);
            Console.ReadKey();
        }
        //宣告方法来计算面积,要return 面积,out  圆周长
        static double GetArea(double r, out double y)
        {
            //计算圆周长
            y = 2 * r * Math.PI;

            //计算圆面积
            double s = (r * r) * Math.PI;
            return s;
        }
    }
  }

结果:

圆半径 : 4
圆周长 = 25.1327412287183
圆面积 = 50.2654824574367

ref与Out的差异/images/emoticon/emoticon70.gif

  • ref : 使用前可以给传递的参数 值
  • Out : 使用前是不能赋值的,即使赋值也会被忽略
  • 因此Out无法拿来做数据传递,只能取得返回值

今天的文章就到这边,大家记得像鲑鱼一样,明天记得回来看我的文章哦!


<<:  Day 19 - Rancher App(v2.5) 介绍

>>:  D18-(9/18)-光磊(2340)-智慧手表供应链

ASP.NET MVC 从入门到放弃 (Day1) -基本语言介绍

前言:目前是学windows application,都进入云端时代了,也想来学点Web 程序 这3...

Day 50 (Node.js)

1.保留表单资料 登入资料输入错误,无法登入保留输入值 (1)login.html <inpu...

JavaScript 进阶笔记一 (变数)

一、变数 JavaScript 七种型态 Primitive type null undefine ...

Day16. Blue Prism牌乐高积木-BP Collection and Loop Stages 的模拟测试

还记得我们之前提到Blue Prism有如积木般, 将不同的Object堆积、重整、并列後, 可以产...

模型架构--4

Facenet 是google在2015於CVPR所发表的,提出在特徵空间里做出识别、验证的问题,只...