Confused about implicit and explicit conversion (Typo in tutorial?)

Hi everyone, New learner here and first post.
I’m starting the C# course and ran into something that confused me.
Screenshot_2020-12-05 Learn C# Codecademy(1)

I understand you can’t convert ‘string’ into ‘int’ implicitly, but doesn’t the cast operator (int) means it’s an explicit conversion?

While i know it’s wrong this is the code it asks you for you to try out.

int faveNumber = (int)Console.ReadLine();

Is it a typo in the explanation on the screenshot or what? And thanks in advance!

Are you asking if (int) is an explicit cast? Yes it is. An implicit would be going from an int to a long because not data is lost:

int a = 1;
long b = a; // implicitly cast a, which is an int to a long.
int c = (int)b; // explicit cast b, which is a long to an int.
int d = b; // throws an InvalidCastException as not implicit conversion from long to int.

You cannot implicitly or explicitly cast a string to a int. You can use type conversion though through int.Parse/TryParse and Convert.ToInt32.

My confusion is that in the tutorial it says "That’s because it is not possible to implicitly convert a string into an int ". Even though it used an explicit cast.

Yeah, given the context and how it seems to be referring to the (int), you are right it should be explicitly not implicitly. Well at least you know you’ve learnt it right to spot the error.

That is what i was guessing. Thanks for the help