C#关键字—方法参数

Printed From Microsoft.docs;

使用 params 关键字可以指定采用数目可变的参数的方法参数

可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组。 还可以不发送参数。 如果未发送任何参数,则 params 列表的长度为零。

在方法声明中的 params 关键字之后不允许有任何其他参数,并且在方法声明中只允许有一个 params 关键字。

public class MyClass
{
    public static void UseParams(params int[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }

    public static void UseParams2(params object[] list)
    {
        for (int i = 0; i < list.Length; i++)
        {
            Console.Write(list[i] + " ");
        }
        Console.WriteLine();
    }

    static void Main()
    {
        // You can send a comma-separated list of arguments of the
        // specified type.
        UseParams(1, 2, 3, 4);
        UseParams2(1, ‘a‘, "test");

        // A params parameter accepts zero or more arguments.
        // The following calling statement displays only a blank line.
        UseParams2();

        // An array argument can be passed, as long as the array
        // type matches the parameter type of the method being called.
        int[] myIntArray = { 5, 6, 7, 8, 9 };
        UseParams(myIntArray);

        object[] myObjArray = { 2, ‘b‘, "test", "again" };
        UseParams2(myObjArray);

        // The following call causes a compiler error because the object
        // array cannot be converted into an integer array.
        //UseParams(myObjArray);

        // The following call does not cause an error, but the entire
        // integer array becomes the first element of the params array.
        UseParams2(myIntArray);
    }
}
/*
Output:
    1 2 3 4
    1 a test

    5 6 7 8 9
    2 b test again
    System.Int32[]
*/
namespace _050_参数数组__定义一个参数个数不确定的函数_ {
    class Program {
        static int Sum(int[] array)//如果一个函数定义了参数,那么在调用这个函数的时候,一定要传递对应类型的参数,否则无法调用(编译器编译不通过)
        {
            int sum = 0;
            for (int i = 0; i < array.Length; i++)
            {
                sum += array[i];
            }
            return sum;
        }

        static int Plus(params int[] array)//这里定义了一个int类型的参数数组,参数数组和数组参数(上面的)的不同,在于函数的调用,调用参数数组的函数的时候,我们可以传递过来任意多个参数,然后编译器会帮我们自动组拼成一个数组,参数如果是上面的数组参数,那么这个数组我们自己去手动创建
        {
            int sum = 0;
            for (int i = 0; i < array.Length; i++) {
                sum += array[i];
            }
            return sum;
        }
        static void Main(string[] args)
        {
            int sum = Sum(new int[] {23, 4, 34, 32, 32, 42, 4});
            Console.WriteLine(sum);
            int sum2 = Plus(23, 4, 5, 5, 5, 32, 423, 42, 43,23,42,3);//参数数组就是帮我们 减少了一个创建数组的过程
            Console.WriteLine(sum2);
            Console.ReadKey();
        }
    }
}

原文地址:https://www.cnblogs.com/bananana/p/8985703.html

时间: 2024-12-15 21:20:52

C#关键字—方法参数的相关文章

C# 参考之方法参数关键字:params、ref及out

如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值.可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值.通过使用方法参数关键字,可以更改这种行为. params params 关键字可以指定在参数数目可变处采用参数的方法参数. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字. 示例: 字面意思比较难懂,所以看示例很有用. using System; class App { public stati

c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)

 一.方法参数的类型----值类型和引用类型 当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中即实参和形参中的数据相同但存放在内存的不同位置.所以,在目标方法中对形参所做的更改不会对调用者的初始变量产生任何影响. 当方法传递的参数是引用类型是,只是将变量的引用复制到目标参数中,实参和形参的引用指向内存中的同一位置.所以,在目标方法中对形参所做的更改会影响调用者的初始变量. 二.一些特殊的方法参数 1.引用参数---ref (使值类型的变量做方法参数时也可以传引用) 一些数据类型(

C#中方法参数的类型

C#方法参数类型有三种: 根据传递方式不同分为值传递和引用传递 值传递的本质是在传递参数时是把实参里面存的值传递给方法的形参,方法中对形参改变数值不会影响原来实参里面的数据. 输出结果为0 引用类型传递的本质是:实参是引用类型存储的是地址值,传递时是将实参中的地址传递给形参,这个时候形参中存储的是地址值.而在方法中改变变量值的时候是引用地址中存储的数据,所以会改变原来实参变量的值.因为两个变量引用的是一个地址. 声明引用类型传递时,需在方法签名中使用ref关键字声明参数类型为引用传递,并且在调用

方法参数(params,ref,out)

params 使用该关键字可以指定采用数目可变的参数的方法参数,可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组,还可以不发送参数,如果未发送任何参数,则params列表的长度为0 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字 public class MyClass { public static void UseParams(params int[] list) { for (int i = 0; i < l

JavaScript之jQuery-9 jQuery 开发插件(添加新全局函数、添加jQuery对象方法、添加新简写方法、方法参数)

一.添加新的全局函数 全局函数 - 全局函数,实际上就是jQuery对象的方法,从实践角度看,它们是位于jQuery命名空间内部的函数 - jQuery内置的某些功能是通过全局函数实现的 - $.ajax()函数就是典型的全局函数 - 向jQuery命名空间添加一个函数,只需要将这个新函数指定为jQuery的一个属性值   - 如果要使用该全局函数时,可通过一下代码调用 - 也可以通过别名来调用 添加多个函数 - 如果我们想在插件中提供多个全局函数,可以独立的声明这些函数   - 还可以使用$.

Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权限修饰符,默认访问, 类,方法,成员变量 private 权限修饰符,私有访问, 方法,成员变量 static 静态修饰符 方法,成员变量 final 最终修饰符 类,方法,成员变量,局部变量 abstract 抽象修饰符 类 ,方法 我们编写程序时,权限修饰符一般放于所有修饰符之前,不同的权限修饰

2017-9-17C#笔记(方法,方法参数 ,foreach语句)

方法: 方法作为类中最常见的最有用的一个成员,算是完成特定任务,实现特定任务的重要的编程模式. "更少的代码,更多的复用" (有些教程中,将方法称为函数,函数和方法没有本质的区别,但是通常自己写的俄实现特定的功能的代码块,叫做方法;有系统简介或者直接生成的不完整的代码块叫做函数.) 方法定义的一般形式: Static      返回类型         方法名(形式参数列表) { 声明部分 执行部分 } 事例1:编写方法判断一个数是否是完全数:完全数的定义如下:它所有的真因子(即除了自

ref out 方法参数

ref 关键字使用参数按引用传递,而不是值,通过引用传递的效果是在方法中对参数的任何修改都会反映在调用方法 的基础参数中.引用参数的值与基础参数变量的值始终是一样的.1.若要使用 ref 参数,则方法定义和调用方法都必须显示使用 ref关键字2.传递到 ref 参数必须先初始化,这与out不同,out的参数在传递之前不需要显示初始化3.属性不是变量,因此不能作为 ref 参数传递4.尽管ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的.因此,如果一个方法采用 ref参

方法参数 Params

params,ref,out都是方法参数 首先类似这样的,传递的参数args添加了params修饰 public void OpenWindow(params object[] args){ int id=args[0]; Hashtable tab=(Hashtable)args[1]; } public void Init(){ List<ItemInfo> itemList=XUIManager.instance.getInfo<ItemInfo>(); OpenWindow