Gần đây, tôi đã phát hiện ra rằng indexer có thể chấp nhận một mảng các đối số như params
:sử dụng thực tế của params indexer
public class SuperDictionary<TKey, TValue>
{
public Dictionary<TKey, TValue> Dict { get; } = new Dictionary<TKey, TValue>();
public IEnumerable<TValue> this[params TKey[] keys]
{
get { return keys.Select(key => Dict[key]); }
}
}
Sau đó, bạn sẽ có thể làm:
var sd = new SuperDictionary<string, object>();
/* Add values */
var res = sd["a", "b"];
Tuy nhiên, Tôi chưa bao giờ gặp việc sử dụng như vậy trong .NET Framework hoặc bất kỳ thư viện của bên thứ ba nào. Tại sao nó được thực hiện? Cách sử dụng thực tế của việc giới thiệu chỉ mục params
là gì?
Tôi phải thừa nhận: đó là trường hợp sử dụng khá thú vị cho từ khóa 'params'. –
Một bộ chỉ mục chỉ là đường cú pháp được áp dụng cho một phương pháp thông thường (với một thực thi rằng nó có ít nhất một tham số). Vì một phương thức bình thường có một danh sách * tham số chính thức * (được định nghĩa trong phần 10.6.1 của đặc tả ngôn ngữ C#) và một danh sách * tham số chính thức có thể bao gồm một tham số * *, nó có nghĩa là bạn có thể sử dụng ' params' với một người lập chỉ mục. –