これは合法ではありません。C#。それはポリフォニックC#です。それはresearch project from Microsoftです。それが正確定義されていない残念だが、ポイントはこれです:
ポリフォニックC#の
は、しかしながら、身体は(同期および/または非同期)メソッドのセットに関連付けることができます。このような定義をコードと呼び、特定の方法が複数のコードのヘッダーに表示されることがあります。コードの本体は、ヘッダ内のすべてのメソッドが呼び出された後にのみ実行できます。
従って&
はこれらのメソッドをまとめてコードに組み込み、コードのすべてのメソッドが呼び出されるまで呼び出されません。
同じarticleに沿って少しさらに:
これらの2つの方法は、returnステートメントから成る本体れた単一コードのヘッダに(アンパサンドで区切られた)に表示されます。 今b
がBuffer
のインスタンスであり、そのプロデューサとコンシューマスレッドがb
を介して通信することを望むと仮定する。プロデューサはput()
を呼び出します。このメソッドは非同期なのでブロックしません。コンシューマはget()
を呼び出します。このメソッドは同期的なので、put()の呼び出しが一致するまでブロックされます。 b
がput()
とget()
の両方を受信すると、本文が実行され、get()
を呼び出した結果、put()
への引数が返されます。 put()
は、それらのいずれかを目覚めために受信され、それらの引数がその後のget()
Sによって消費される前に、put()
に複数の呼び出しを行うことができる前に、get()
から複数のコールが保留されてもよいです。
:しかし、そのような刃先の性質です。私はそれを得る。
@Amy:OPは両方の言語を混在させていると思います。だから私はそれが誤解を招く場合でも、C#タグを保持します。ちょうどこの質問がこの誤解を解決できるからです。 –
@TimSchmelter合意した、私は通常のC#と読んで、私の混乱は、より良いC#タグを維持する –