Quando programma in Java, rendo esplicito tutto il nullability; cioè, si presume che un'istanza di Foo sia non nulla, e se voglio che sia nullo, io uso un'annotazione   @Nullable    (o meglio,   Optional<Foo>   ). Ma C # non supporta nativamente le annotazioni e Nullable < > è solo per i tipi di valore. 
Ma cosa succede se ho fatto qualcosa di simile?
struct Value<T> where T : class {
  T value;
}
 E quindi usa   Value<Foo>?    come tipo per un campo. Che impatto avrebbe avuto sulle prestazioni / memoria, e c'è qualcosa che rende questa idea pessima?