C#方法的参数类型

c#中方法的参数有四种类型:

值参数,不含任何修饰符。

引用型参数,以ref修饰符声明。

输出参数,以out修饰符声明。

数组型参数,以params修饰符声明。

实例:

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

namespace shiyan2._0
{
     class Person
    {
        public int age;
        public void ChangeAge(ref int age)//ref称为引用参数
        {
            age = age + 10;
        }
        public void ChangeWeight(out double d)
        {
            d = 120;
        }
        //params表示强调是一个可变的数组

        public void ShowInfo(string a,params int[] showages)
        {
            foreach (int i in showages)
            {
                Console.WriteLine("年龄:" + i);
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace shiyan2._0
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //ref和out之间的区别,虽然都是引用的原有的数据进行操作。
            //使用ref的数据在使用前必须赋值。
            //使用out类型的参数可以赋值也可以不赋值。
            int myage = 18;
            double dweight = 108;
            Person p=new Person();
           // p.ChangeAge(myage);//值参数传递,它实际是克隆了一个值
            p.ChangeAge(ref myage);//ref引用参数。引用原有的参数(原有的数据必须先赋值)
            p.ChangeWeight(out dweight);//out参数,引用原有的数据(原有的数据可以不用赋值的)
            Console.WriteLine("年龄:" + myage);
            Console.WriteLine("体重:" + dweight);
            int[] myages = { 12, 13, 14 ,15};
            p.ShowInfo("",myages);

        }
    }
}

带有参数和返回值的方法调用:

  比如在定义的GenerateCharacter()方法的参数列表中增加两个参数,一个是string类型的角色名字name,另一个角色的等级int类型的level.

方法的定义就需要修改为

Public  void  GenerateCharacter(string   name ,int   level)

{

Debug.LogFormat("Character:{0}-Level:{1}",name,level);

}

在调用函数的地方,我们增加一个局部变量

Int  characterLevel =32;然后调用函数

GenerateCharacter("Spike",characterLevel);

   方法定义时的参数 string name,int  level,称为形式参数(parameter),这两个参数的作用域在这个“{}”包含的方法体内,是这个方法内的局部变量。

   方法调用时传输的两个参数,可以是字面值(literal value),或者变量,这时被称为实际参数(argument).

  在上面的基础上,将方法改为带有返回值的方法:

方法的定义中需要将void改为int,然后需要在方法体内带上return的关键字,用它返回一个int类型的数值;

代码修改为:

Public int GenerateCharacter(string name,int level)

{

Debug.LogFormat("Character:{0}-Level:{1}",name,level);

Return level+5;

}

这里return 后面可以跟一个字面值,变量,或者一个表达式,只要返回的是一个int类型的值就可以。在没有返回类型的情况下,在方法体内也可以使用return的关键字,此时直接写上“return”即可,方法体内代码遇到return 的关键字,函数立即返回(即跳出这个函数),不执行 return之后的代码了,常用于分情况讨论的执行语句中。

返回值的获取:可以用一个变量去获取这个返回值,在Start()函数中我们定义一个局部变量

Int nextSkillLevel=GenerateCharacter("Spike",characterLevel);

Debug,Log(nextSkillLevel);

也可以将整个方法调用作为一个实参传给其他方法,比如直接进行打印:

Debug.Log(GenerateCharacter("Faye",characterLevel));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值