Does C# support a variable number of arguments, and how?

前端 未结 4 832
自闭症患者
自闭症患者 2020-11-27 19:17

Does C# support a variable number of arguments?

If yes, How does C# support variable no of arguments?

What are the examples?

How are variable argum

相关标签:
4条回答
  • 2020-11-27 19:49

    C# supports variable length parameter arrays using the params keyword.

    Here's an example.

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

    There's more info here.

    0 讨论(0)
  • 2020-11-27 19:55

    Yes, params:

    public void SomeMethod(params object[] args)
    

    params has to be the last argument and can be of any type. Not sure if it has to be an array or just an IEnumerable.

    0 讨论(0)
  • 2020-11-27 19:57

    Yes. The classic example wourld be the params object[] args:

    //Allows to pass in any number and types of parameters
    public static void Program(params object[] args)
    

    A typical usecase would be passing parameters in a command line environment to a program, where you pass them in as strings. The program has then to validate and assign them correctly.

    Restrictions:

    • Only one params keyword is permitted per method
    • It has to be the last parameter.

    EDIT: After I read your edits, I made mine. The part below also covers methods to achieve variable numbers of arguments, but I think you really were looking for the params way.


    Also one of the more classic ones, is called method overloading. You've probably used them already a lot:

    //both methods have the same name and depending on wether you pass in a parameter
    //or not, the first or the second is used.
    public static void SayHello() {
        Console.WriteLine("Hello");
    }
    public static void SayHello(string message) {
        Console.WriteLine(message);
    }
    

    Last but not least the most exiting one: Optional Arguments

    //this time we specify a default value for the parameter message
    //you now can call both, the method with parameter and the method without.
    public static void SayHello(string message = "Hello") {
        Console.WriteLine(message);
    }
    

    http://msdn.microsoft.com/en-us/library/dd264739.aspx

    0 讨论(0)
  • 2020-11-27 20:05

    I assume you mean a variable number of method parameters. If so:

    void DoSomething(params double[] parms)
    

    (Or mixed with fixed parameters)

    void DoSomething(string param1, int param2, params double[] otherParams)
    

    Restrictions:

    • They must all be the same type (or of a child type) as is true for arrays as well
    • There can only be one for each method
    • They must come last in the parameter list

    That's all I can think of at the moment though there could be others. Check the documentation for more information.

    0 讨论(0)
提交回复
热议问题