在 C# 中将字符串数组初始化为方法调用中的参数

问题描述 投票:0回答:5

如果我有这样的方法:

public void DoSomething(int Count, string[] Lines)
{
   //Do stuff here...
}

为什么我不能这样称呼它?

DoSomething(10, {"One", "Two", "Three"});

什么是正确的(但希望不是太远)?

c# arrays methods initialization parameter-passing
5个回答
32
投票

你可以这样做:

DoSomething(10, new[] {"One", "Two", "Three"});

如果所有对象都具有相同类型,则无需在数组定义中指定类型


11
投票

如果

DoSomething
是可以修改的函数,则可以使用
params
关键字传入多个参数,而无需创建数组。它还会正确接受数组,因此无需“解构”现有数组。

class x
{
    public static void foo(params string[] ss)
    {
        foreach (string s in ss)
        {
            System.Console.WriteLine(s);
        }
    }

    public static void Main()
    {
        foo("a", "b", "c");
        string[] s = new string[] { "d", "e", "f" };
        foo(s);
    }
}

输出:

$ ./d.exe
A
乙
C
d
e
F

2
投票

试试这个:

DoSomething(10, new string[] {"One", "Two", "Three"});

2
投票

您可以在传递它的同时构造它,如下所示:

DoSomething(10, new string[] { "One", "Two", "Three"});

1
投票

您也可以使用 [ ] 创建它,如下所示:

DoSomething(10, ["One", "Two", "Three"]);
© www.soinside.com 2019 - 2024. All rights reserved.