C/C++ を使用する状況によっては、戻り値が意図的に無視されることをコンパイラーに構文的に指示することができます。
int SomeOperation()
{
// Do the operation
return report_id;
}
int main()
{
// We execute the operation, but in this particular context we
// have no use of the report id returned.
(void)SomeOperation();
}
これは公正な方法だと思います。第一に、ほとんどのコンパイラはここで警告を生成しないからです。第二に、著者が return を無視することを意識的に選択したことが将来の開発者に明確に示されるからです。著者の思考の軌跡が曖昧ではなくなります。
私の知る限り、C# コンパイラは暗黙的に無視された戻り値について文句を言うことはありませんが、他の開発者に明確に示すために使用できる同様の規則があるかどうかを知りたいです。
この規則の実際の使用に疑問を呈する(または、潜在的に重要でない戻り値を持つメソッドを持つことは設計不良を示す)一部の人々への返答です。
実際の .NET の例 (最初からこの質問に基づいておくべきだったかもしれません) は、Mutex::WaitOne()
引数を取らないオーバーロードです。ミューテックスが安全に取得された場合にのみ戻り、そうでない場合は戻りません。ブール値の戻り値は、戻ったときにミューテックスを所有していない可能性があるその他のオーバーロード用です。
したがって、私の推論に従って、マルチスレッド コードで、戻りを無視することを選択したことを示したいと思います。
Mutex mtx = new Mutex();
(void)mtx.WaitOne();
戻り値は 以外にはならないためですtrue
。
ベストアンサー1
C# 7.0 以降では、破棄演算子 '_' を使用して、意図的に無視される戻り値を示すことができます。
int SomeOperation()
{
return report_id;
}
int main()
{
_ = SomeOperation();
}
詳細については、Microsoftのドキュメントをご覧ください。ここ。