Кто может объяснить, что за порнография творится с nullable-reference types? Почему
Do(KeyValuePair<String?, String?> pair)
не принимает на вход
KeyValuePair<String, String>
? Это какой-то задел под более строгую типизацию? Иначе мне не понятен смысл такого ограничения - почему я не могу передать NotNull в метод, принимающий Nullabel?
Представь, что там не KeyValuePair, а Reposiory<T?>
а метод Do внутри себя делает _repository.Save(null);
В оригинальном контракте, если ты передаешь в метод Reposiory<T?> все работает и окей, но если ты передашь Reposiory<T>, то метод ду получится запишет нулл в репозиторий, который нулы не принимает.