Для этого требуется тип , реализующий индексатор для поставщика ref
-turn в индексаторе , поэтому нет: вы не можете использовать его с Dictionary<string, int>
.Но с чем-то вроде этого:
class MyRefDictionary<TKey, TValue>
{
public ref TValue this[TKey key]
{ // not shown; an implementation that allows ref access
get => throw new NotImplementedException();
}
}
Вы действительно могли бы сделать:
ref var val = ref dictionary[key];
Обратите внимание, что массивы являются особым случаем, поскольку массивы всегда разрешают доступ ref indexer, то есть
SomeMethod(ref arr[42]);
(доступ к индексаторам в массивах осуществляется компилятором, а не типом)