c# - Using Elvis operator in combination with string.Equals -


i wonder why following code works in c# 6.0:
(in example data random class containing val public string)

if ("x".equals(data.val?.tolower()) { } 

but following line isn't:

if (data.val?.tolower().equals("x")) { } 

visual studio shows me following error:

cannot implicitly convert type 'bool?' 'bool'. explicit conversion exists (are missing cast?)

if ("x".equals(data.val?.tolower()) { }  

will return boolean because of equals call this:

if (data.val?.tolower().equals("x")) { } 

when expression evaluated return system.nullable<bool> different bool (former struct can assigned value null while latter can true or false) the if expects. also, in c# null value doesn't evaluate false (according c# specification).


Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -