前言:本博文是我自己对C#方法(函数)这块的一些理解,阅读本博文,你可以掌握C#方法(函数)的概念、声明、调用以及一些参数的操作。本博文里面的概念、理论也都是自己总结的,若有不足之处,欢迎留言补充、指正,谢谢!

一、方法(函数)的概念

函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们。要求的数据叫做参数,返回的执行结果就是返回值。

有了函数,我们在写代码的时候就像拼积木,C#中的各种各样的技术其实就是通过for、if等这些基础的语法,将不同的函数按照一定的逻辑组织起来。

二、关于方法(函数)的一些补充知识

  1. 为什么叫方法和函数呢?
    指某个对象的行为。
  2. 有什么用?
    减少重复的代码,提高代码的复用性。
  3. 两者的区别是什么?
    类里叫方法,类外叫函数。不过现在区分已经不大了。
    函数是这类事情是怎么干的,方法是某种人(某个对象)是如何干这类事情的。
    方法和对象相关,函数和对象无关。
    简单的理解下,方法就是绑定了实例的函数。
  4. 过程、方法、函数的区别?
    过程(Process): 无返回值。
    函数(function):有返回值。
    方法:不管有无返回值(过程+函数)。
  5. 函数返回值的关键字?
    return
  6. 代码示例

方法:

public void Print()// void:表示不返回任何数据
{
   MessageBox.Show("打印所有的数据")}

函数:

public int GetCount()
{
    return 100;
}
  1. 什么是函数的参数?
    参数其实相当于一个值的副本。
    传递副本的好处就是可以避免因误操作而影响了原值。缺陷就是会因复制而产生性能损耗。
  2. 参数的关键字是什么?
    ref、out、params

三、方法(函数)的语法格式

[public] [static] 返回值类型 方法名字([参数列表])
{
	方法体
}

注意:

  1. public:访问修饰符,可以省略,写上这个代表此方法(函数)是公共的,也就是谁都可以进行访问。当然也有其他访问修饰符,详情请查看本人另一篇博文:C#中的五种访问修饰符
  2. static:表示静态的,详情请查看本人另一篇博文:C#静态static的超全用法,建议收藏!
  3. 返回值类型:int、string、char等,若没有返回值就是void。
  4. 方法名字:遵循Pascal命名规则,详情请查看百度百科:帕斯卡命名法
  5. 参数列表:可以没有参数,但是小括号是必须要有的。

四、调用方法(函数)

调用方法(函数):类名.方法名([参数]);

注意:

如果调用同一个类里面的方法,类名可以省略。

五、示例进行讲解

下面列举一个函数,它可以传入一个int型数组,此函数将返回一个数组中的最大值给我们。

  1. 创建函数
public static int MaxArr(int[] a)
{
    int temp = Int32.MinValue;
    for (var i = 0; i < a.Length; i++)
    {
        if (a[i]>temp)
        {
            temp = a[i];
        }      
    }
    return temp;
}
  1. 调用函数
int result = MaxArr(new int[]{20,0,-10,30,25,-100});
Console.WriteLine("数组中最大值为:"+result);
//不自动关闭控制台,等待输入
Console.ReadLine();
  1. 执行效果

在这里插入图片描述
相信到这里,你已完全的明白了函数的创建与调用。下来,我们补充一下函数返回值和参数的关键字。

六、补充:函数返回值和参数的关键字

  1. return的作用
  1. 返回方法的结果(return后面接其他东西)。
  2. 在没有返回值的方法里面,终止当前方法(return后面不接东西)。
  1. params参数

不定参数个数关键字,如果参数列表还有其他参数,params修饰的参数一定要放到最后一个。

  1. out参数
  1. 可以帮助我们在一个方法中返回多个值,不限类型。
  2. 使用out参数的时候,要求out参数必须在方法内为其赋值,也就是初始化。
  1. ref参数
  1. ref参数侧重于将一个变量以参数的形式带到一个方法中进行改变,改变完成后,再将改变后的值带出来。
  2. 在使用ref参数的时候需要注意:ref参数在方法外必须为其赋值,也就是初始化。

例题:

    //return:终止函数的运行
    public static void MyFun(int num)
    {
         if (num == 1)
         {
       		 Console.WriteLine("num=1");
         }  
             return;
         Console.WriteLine("如果num=1的话,此行代码不被执行");
     }
     
     // return:返回方法的结果
     public int GetResult()
    {
          int result = 1;
          return result;
      }

	//引用参数(ref):ref在使用前需要先初始化变量的值,在方法体外先初始化
    public static void RefMethod(ref int i)
    {
           i++;
    }

    // 输出参数(out):out参数必须在方法体内初始化
    public static void OutMethod(out int i)
    {
         i=0;
         i++;
    }

   // 可变参数(params):params后面必须跟数组,之后不允许跟任何其他参数,并且在方法声明中只允许一个params关键字
   static int addi(params int[] values)
   {
       int sum=0;
       foreach (int i in values)
       {
           sum=sum+i;
       }
       return sum;
   }
   
    // 引用参数(ref):ref在使用前需要先初始化变量的值,在方法体外先初始化
    public static void RefMethod(ref int i)
    {
           i++;
    }

    // 输出参数(out):out参数必须在方法体内初始化
    public static void OutMethod(out int i)
    {
         i=0;
        i++;
    }

   // 可变参数(params):params后面必须跟数组,之后不允许跟任何其他参数,并且在方法声明中只允许一个params关键字
   static int addi(params int[] values)
   {
       int sum=0;
       foreach (int i in values)
       {
           sum=sum+i;
       }
       return sum;
   }
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐