至少具有一个值的 C# 参数
本文关键字:参数 有一个 具有一 | 更新日期: 2023-09-27 18:33:14
如何使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
}
只需执行以下操作:
public void Foo(string first, params string[] s) { }
不能在编译时为params
指定此类条件。
但是,您可以在运行时检查这一点,如果不满足指定的条件,则会引发异常。
有一种方法可以在编译时至少需要一个参数,但它真的很笨拙。
public class RequireAtLeastOneParam {
public string Foo(params string[] args)
=> string.Join(' ', args);
/// <summary>The purpose of this overload is to require at least one argument
/// on any call to Foo. Because this overload exists, call with no arguments won't compile.</summary>
public string Foo(params char[] args)
=> Foo(args.Select(x => x.ToString()).ToArray());
public void WontCompile() {
string foo = Foo(); // compilation fails because this is ambiguous between the two overloads.
}
}
要完成接受的答案:
public void Foo(string bar, params string[] bars)
{
string[] strs = new string[] { bar }.Concat(bars).ToArray();
}