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