Безопасна ли асинхронная рекурсия в C # (async ctp / .net 4.5)?

Простой ответ: Нет. Но почему пропустить, когда переустановка аргументов достигает этого?

У вас есть «Неправильное использование аргументов функции по умолчанию» и не будет работать так, как вы ожидаете.

Замечание из документации PHP:

При использовании аргументов по умолчанию любые значения по умолчанию должны быть в правой части любых аргументов, отличных от значения по умолчанию; в противном случае все будет работать не так, как ожидалось.

blockquote>

Рассмотрим следующее:

function getData($name, $limit = '50', $page = '1') {
    return "Select * FROM books WHERE name = $name AND page = $page limit $limit";
}

echo getData('some name', '', '23');   // won't work as expected

Выход будет:

"Select * FROM books WHERE name = some name AND page = 23 limit"

Правильное использование аргументов функции по умолчанию должно быть похоже это:

function getData($name, $page = '1', $limit = '50') {
    return "Select * FROM books WHERE name = $name AND page = $page limit $limit";
}

echo getData('some name', '23');  // works as expected

Выход будет:

"Select * FROM books WHERE name = some name AND page = 23 limit 50"

По умолчанию значение по умолчанию справа от значений, отличных от значений по умолчанию, гарантирует, что он всегда будет перенастроить значение по умолчанию для этого переменная, если ее не определено / задано. Здесь ссылка для ссылки и откуда взялись эти примеры.

Редактирование: установка этого параметра на null, как показывают другие, может работать и другая альтернатива, но может не соответствовать тому, что вы хотите. Он всегда будет устанавливать значение по умолчанию равным null, если оно не определено.

21
задан svick 30 May 2012 в 11:03
поделиться