На самом деле вам не нужно ничего делать, чтобы получить нулевые значения в таком списке:
var list = new List<Regex>();
list.Add(null);
Это потому, что Regex - это класс, и именно так он работает.
var regex = CreateMyRegex();
list.Add(regex);
Независимо от того, что возвращает метод CreateMyRegex
, ноль или экземпляр, он будет добавлен в список.
На самом деле в настоящее время вы не можете сделать это наоборот - запретите пустые значения в таком списке. Есть вероятность, что это будет возможно в C # 8.
Если вы хотите сделать это со структурами, вы можете сделать это также:
var list = new List<int?>();
list.Add(null);
Синтаксис вопросительного знака не ограничен обобщениями в c #, вы можете создавать пустые структуры как любой другой тип переменной:
int? number = null;