Loading...
murkata86 avatar murkata86 10 Точки

Enum.Parse() Vs. Enum.TryParse()

Здравейте,

Имам следния въпрос - кое е по - добре да се използва Enum.Parse() или Enum.TryParse()?

Ето ги и двата варианта в код:

 

BaterryType baterryType = (BaterryType)Enum.Parse(typeof(BaterryType), value);
this.type = baterryType.ToString();

И с TryParse():

BaterryType baterryType;
if (!Enum.TryParse(value, out baterryType))
{
	throw new ArgumentException("Invalid battery type!");
}
this.type = baterryType.ToString();

При първия вариант с Enum.Parse(), винаги мога да го сложа в един Try-Catch блок и предполагам пак ще има същия резултат, но кой е по - добрия вариант и дали това е добра практика?

Поздрави,

Иван

Тагове:
0
C# OOP Basics
msmilkoff avatar msmilkoff 338 Точки

TryParse() по принцип е по бърз, защото не хвърля Exception, ако не може да парсне, а връща false.
 
Използвай я, ако не си сигурен дали value-то ще е валидно.
Parse() ползвай, ако си сигурен, че почти винаги ще ти подават валиден вход.
И двете са добра практика, зависи от случая. Ако не те интересува защо не е могло да се парсне, TryParse() е по-добрия вариант.
Ако искаш да знаеш защо операцията не е успяла и да върнеш някакво по-информативно user-friendly съобщение, ползваш Parse() и хващаш всички възможни Exception-и, за да видиш къде точно е проблема.
* [Edit - Confirmed :)] Доколкото си спомням Parse() вътрешно вика TryParse() и ако резултата е false - хвърля Exception 

1
22/12/2015 13:21:23
murkata86 avatar murkata86 10 Точки

Супер! Благодаря много и на двамата! :)

Весели празници!

Иван

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.