.NET での null 非許容参照型のサポートに関して、多くの質問がありました。コード コントラクトが大いに期待されていましたが、予算が限られている人向けの実行時チェックに限定されています。
コード コントラクト以外のアプローチについては、Jon Skeet が数年前にこれに関するブログ記事を書きました。コメント投稿者の 1 人が、デフォルト コンストラクターを無効にするように IL を変更した便利な見た目のNonNull 構造体を提供しました。これは優れたアプローチのように思えます。これを拡張して、あらゆる種類の null 非許容のmicrotypesを提供することを想像できます。IL 操作は、構造体の属性によってトリガーされるビルド後のステップである可能性があります。
//Microtype representing a non-zero age, so we want to disable the default ctor
[NoDefaultConstructor]
public struct Age
{
public Age(int age)
{
// Implementation (including validation) elided
}
}
これをさらに調査する前に、これが引き起こす可能性のある問題を誰かが知っているかどうか尋ねたいと思いますか? 私は何も考えることができませんでした。