C#方法中的几种参数传递

参数传递

以下为从菜鸟教程中学习记下的笔记

1、按值传递参数

这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。

例子:

//定义一个值传递的方法
public void swap(int x,int y)
{
}
//调用的时候
xxx.swap(a,b);

2、按引用传递参数

引用参数是一个对变量的内存位置的引用。当按引用传递参数时,与值参数不同的是,它不会为这些参数创建一个新的存储位置。引用参数与提供给方法的实际参数具有相同的内存位置。

在C#中,使用ref关键字声明引用参数。

例子:

//定义一个引用传递的方法
public void swap(ref int x,ref int y)
{
}
//调用的时候
xxx.swap(ref a,ref b);

3、按输出传递参数

return语句可用于只从函数中返回一个值。但是,可以使用输出函数来从函数中返回两个值。输出参数会把方法输出的数值赋给自己,其他方面与引用参数类似。

例子:

//定义一个输出传递的方法
public void getValue(out int x)
{
}
//调用的时候
xxx.getValue(out a);

提供给输出函数的变量不需要赋值。当需要从一个参数没有指定初始值的方法中返回值时,输出函数特别有用。

实例:

using System;

namespace CalculatorApplication
{
  class NumberManipulator
  {
     public void getValues(out int x, out int y )
    {
         Console.WriteLine("请输入第一个值: ");
         x = Convert.ToInt32(Console.ReadLine());
         Console.WriteLine("请输入第二个值: ");
         y = Convert.ToInt32(Console.ReadLine());
    }
 
     static void Main(string[] args)
    {
        NumberManipulator n = new NumberManipulator();
        /* 局部变量定义 */
        int a , b;
       
        /* 调用函数来获取值 */
        n.getValues(out a, out b);

        Console.WriteLine("在方法调用之后,a 的值: {0}", a);
        Console.WriteLine("在方法调用之后,b 的值: {0}", b);
        Console.ReadLine();
    }
  }
}

注意:out型数据在方法中必须要赋值,否则编译器会报错。

posted on 2020-05-08 14:49  无畏勇者城之内  阅读(1302)  评论(0编辑  收藏  举报