¿Qué significa el signo de interrogación y el operador de puntos? significa en C # 6.0?

Con C # 6.0 en la vista previa de VS2015 tenemos un nuevo operador,?., que se puede usar así:

public class A {
   string PropertyOfA { get; set; }
}

...

var a = new A();
var foo = "bar";
if(a?.PropertyOfA != foo) {
   //somecode
}

¿Qué hace exactamente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta