This is a short hand for System.Nullable
The question mark states that it is a nullable type.
this syntax will allows you to store a null value for value types (which would otherwise not support null values.
Example:
private char? getLetter() {
if(something) {
return 'a';
else
return null;
}
char? letter = getLetter();
if(letter.HasValue) {
//do something with it
Debug.WriteLine(letter.Value);
}
else
//it's null!