Что делает оператор "каскадного доступа к членам" (..)?
В документации оператора сказано следующее:
x..y
- каскадный доступ к членам. Приводит к x, что полезно для объединения вызовов методов.
Что это значит? Как это используется? Поиск "каскадного доступа к членам" только значимо вернул мне этот отрывок из документации Beef.
1 ответ
Когда он говорит, что "приводит к x", это означает, что после любого разрешения любых вызовов y, что согласуется с тем, как нулевой условный оператор (?.
) работает. Это означает, что вместо того, чтобы делать что-то вроде этого:
let s = scope String();
s.AppendF("2 + 3 = {}", 2+3);
Console.WriteLine(s);
...вы можете использовать String()..AppendF(...)
вместо того String().AppendF(...)
, И так как это выражение будет решать (опять же, после того, какAppendF
называется) слева от оператора, что совпадает с s
, все это можно поместить в WriteLine
вызов:
Console.WriteLine(scope String()..AppendF("2 + 3 = {}.", 2+3));
А бит "цепочки" относится к использованию нескольких каскадных операторов-членов в строке для последовательного вызова элементов одного и того же объекта в одном выражении. Например, вы можете сделать это:
Console.WriteLine(scope String()..AppendF("Two + three = {}.", 2+3)..ToUpper());
...вместо этого:
let s = scope String();
s.AppendF("Two + three = {}.", 2+3);
s.ToUpper();
Console.WriteLine(s);