2012-05-04 34 views
10

Làm cách nào để có thông số params có ít nhất một giá trị?Thông số C# với ít nhất một giá trị

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 
} 

Trả lời

21

Chỉ cần làm:

public void Foo(string first, params string[] s) { } 
+0

Tôi cũng nghĩ về cách giải quyết đó, và tôi nghĩ nó không sạch sẽ. Bởi vì chuỗi 'đầu tiên' sẽ không là một phần của phép lặp trong' string [] '_ (nếu bao giờ) _ có thể không hoạt động đối với một số trường hợp. Có không có cách nào khác? –

+2

Nhưng những gì bạn đang nói là bạn * luôn luôn * sẽ có một tham số để bắt đầu. Giải pháp này phản ánh rõ ràng nhất có thể. – Nick

+11

@JohnIsaiahCarmona Sau đó, chỉ cần ghép chúng lại với nhau: 'new [] {first} .Concat (s)'. Bây giờ bạn có thể bình thường 'foreach' qua kết quả. –

4

Bạn không thể chỉ định điều kiện như vậy cho params tại thời gian biên dịch.

Tuy nhiên, bạn có thể kiểm tra điều này tại thời gian chạy và ném ngoại lệ nếu các điều kiện được chỉ định của bạn không được đáp ứng.

Các vấn đề liên quan