I can't understand why we use dot between C and this as shown in
  C.this
Using the class name before this is called a Qualified this in Java (see Using "this" with class name) and is similar in Scala. You use it when you want to reference an outer class from an inner class. Let's assume for example that you had a method declaration in your C class where you wanted to call this and mean "the this reference of C:
class C {
  val func = new Function0[Unit] {
    override def apply(): Unit = println(this.getClass) 
  }
}
new C().func()
Yields:
class A$A150$A$A150$C$$anon$1
You see the anon$1 at the end of the getClass name? It's because inside the function instance this this is actually of the function class. But, we actually wanted to reference the this type of C instead. For that, you do:
class C {
  val func = new Function0[Unit] {
    override def apply(): Unit = println(C.this.getClass)
  }
}
new C().func()
Yields:
class A$A152$A$A152$C
Notice the C at the end instead of anon$1.