В некоторых ситуациях, использующих 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();
}
Я считаю, что это справедливая практика, во-первых, потому что большинство компиляторов не генерируют предупреждение здесь, а во-вторых, потому что оно явно показывает будущим разработчикам, что автор сделал убедительный выбор, чтобы игнорировать возврат. Это делает автора след мысли не двусмысленным.
Насколько я знаю, компилятор С# не будет жаловаться на неявно проигнорированные значения returnvalues, но я хотел бы знать, есть ли подобное соглашение для использования, чтобы сделать четкое указание другим разработчикам.
EDIT:
В ответ на некоторые люди, которые задают вопрос о фактическом использовании этого соглашения (или что он будет показывать плохой дизайн, чтобы иметь метод с потенциально несущественным возвращаемым значением).
Реальный пример .NET.NET(с которого я, возможно, должен был задать вопрос с самого начала), является перегрузкой Mutex:: WaitOne(), которая не принимает аргументов. Он будет возвращаться только в том случае, если мьютекс был безопасно приобретен, иначе он никогда не вернется. Возвращаемое значение boolean для других перегрузок, где вы можете не иметь мьютекса, когда он вернется.
Итак, по моим рассуждениям, я хотел бы указать в своем многопоточном коде, что я сделал выбор, чтобы игнорировать возврат:
Mutex mtx = new Mutex();
(void)mtx.WaitOne();
Так как returnvalue никогда не может быть ничего, кроме "true".