У чому різниця між продуктивністю CAST і Try_cast?

try_cast відрізняється від функції приведення тим, що допускає такі умови, якщо підтримується приведення типу виразу до типу: Якщо значення sourceExpr не вміщується в домен targetType, результатом буде NULL замість помилки переповнення.

CAST і :: видадуть помилку, якщо перетворення неможливе. TRY_CAST обробляє потенційні помилки, повертаючи NULL замість помилки. TRY_CAST працює лише для рядкових виразів у певних типах, таких як варіації VARCHAR, NUMBER, DATE, BOOLEAN і TIMESTAMP.

Ви використовуєте ключове слово TryCast так само, як і ключове слово CType Function і DirectCast Operator. Ви вказуєте вираз як перший аргумент і тип для його перетворення як другий аргумент. TryCast працює лише з еталонними типами, такими як класи та інтерфейси.

Більше того, коли TRY_CAST застосовано до рядка, особа, яка пише запит, зазвичай бажає лише значення, які людина вважатиме числом. TRY_PARSE, здається, дотримується набору правил, які більше відповідають людському судженню щодо того, що є чи ні числом.

Специфікація TRY_CAST повертає операнд приведення (перший операнд), приведений до типу, визначеного типом даних. Синтаксис і семантика TRY_CAST ідентичні CAST, за винятком випадків, коли операція приведення не вдається, повертається нульове значення.

Якщо коротко: static_cast<>() дає можливість перевірки під час компіляції, C-Style cast — ні. static_cast<>() є більш читабельним і його можна легко помітити будь-де всередині вихідного коду C++, C_Style cast не є. Наміри передаються набагато краще за допомогою приведення C++.

Оцініть статтю