Usage:
x?.property
This is used to access the properties of an object, like the . operator. However, using this operator, if the object is null, the access does not occur, and no runtime error will happen.
// not assigned to anything, so this will be null
my_thingy?.name = "Balloon" // as it is null, no access occurs, and no runtime occurs
= new /obj()
my_other_thingy?.name = "Runtime Damian" // as it is not null, and /obj has a member called name, the variable will be updated
This behavior is identical to the ?: operator, but that operator will not check at compile time if the property does exist for the provided variable type. As such, the ?.
operator is generally preferred.