I was playing around with my code in VB.NET (Visual Studio IDE) when I realised that I could affect a boolean value into a string

The string consequently took the value "True" or "False"

I then tried using it as a boolean such as 

`If StringValueContainingTrueOrFalse then
 'Do Something
End if`

This also worked and is giving the desired result. This made me realise how little I knew about how things worked in the background.

Is the word *True* in the string being detected and the IDE is smart enough to deal with it or does it simply try to convert the value to what it needs to be (so knowing that it needs a boolean value try to convert the string into one to do it's actions) ?

What is happening making this possible ?