它不是方法,它不是变量,它不是属性,它是什么?

时间:2018-05-22 14:56:20

标签: c#

我遇到了我今天不了解的事情。请考虑以下代码段:

public class EventStreamCollection<TKey, TValue>
{
    private readonly ConcurrentDictionary<TKey, TValue> _dictionary = new ConcurrentDictionary<TKey, TValue>();
    private readonly Func<TKey, TValue> _factory;
    public EventStreamCollection(Func<TKey, TValue> factory)
    {
        _factory = factory;
    }

    public TValue this[TKey key] => _dictionary.GetOrAdd(key, _factory);
}

这是什么

public TValue this[TKey key] => _dictionary.GetOrAdd(key, _factory);

它没有我能看到的名字。如果是的话,我想这将属于财产?它是什么以及它是如何工作的?

1 个答案:

答案 0 :(得分:8)

这是一个只读的indexer property

索引器使用this作为名称。它允许您在您的类型的实例上支持方括号。

使用=>语法,它使其成为只读。