C#参数至少有一个值

Joh*_*ona 16 c# parameters

如何params获得至少包含一个值的参数?

public void Foo(params string[] s) { }

public void main()
{
    this.Foo(); // compile error
    this.Foo(new string[0]); // compile error
    this.Foo({ }); // compile error
    this.Foo("foo"); // no error
    this.Foo("foo1", "foo2"); // no error
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ick 31

做就是了:

public void Foo(string first, params string[] s) { }
Run Code Online (Sandbox Code Playgroud)

  • @JohnIsaiahCarmona然后将它们连接在一起:`new [] {first} .Concat(s)`.现在你通常可以"预测"结果了. (12认同)
  • 但你所说的是,你总是*将会有一个参数开始.该解决方案尽可能干净地反映出来. (4认同)
  • @VarvaraKalinina 它有什么特别之处?绝对没有。C#7 有什么用?本地函数。(参见:https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/) (2认同)

log*_*cnp 7

您无法params在编译时指定此类条件.

但是,您可以在运行时检查此项,并在未满足指定条件时抛出异常.