Что делает оператор «доступа к каскадным членам» (..)? - PullRequest
0 голосов
/ 17 января 2020

В документации оператора говорится следующее:

x..y - доступ к каскадному элементу. Результат в x, что полезно для объединения вызовов методов.

Что это значит? Как это используется? Поиск «каскадного доступа к элементам» только содержательно помог мне вернуться к той выдержке из документации по Beef.

1 Ответ

0 голосов
/ 17 января 2020

Когда он говорит, что «приводит к 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);
...