ToString e' un metodo di un oggetto (di object da cui ereditano tutti gli oggetti in .NET). Quindi non e' una funzione (nel senso originale di questo elemento di programmazione), tantomeno ha a che fare con il compilatore.
Per capirci, non puoi scrivere
ToString(...)
come per una qualsiasi funzione di libreria di un linguaggio di tipo procedurale (cosa che invece fai con CStr perche' CStr non e' un metodo di una determinata classe ...).
Sulle caratteristiche elencate dell'OOP sono d'accordo. Sul resto no.
CStr(), ti ripeto, non ha nulla di OOP ...