コードインスペクション: 契約アノテーション定義の問題
このインスペクションは 契約アノテーション の構文を検証します。
契約アノテーションの構文
契約アノテーションの入出力関係の依存関係を指定するには、次の構文を使用します。
[ContractAnnotation("[paramName:][input] =>
output [; [paramName:][input] => output]", [forceFullStates:true])]
input は次のいずれかです。
参照型パラメーターの
null/notnullブールパラメーターの
true/false
output は次のいずれかになります。
参照型の戻り値の
null/notnull/canbenullブール型の戻り値の
true/falsehalt|stop|void|nothing(交換可能)は、関数が正常に戻らないことを示します。 つまり、例外をスローするか、プログラムの実行を停止します。
オプションのブール forceFullStates パラメーター(デフォルトでは false)を使用すると、nullability 分析の 悲観的モードを強制できます。 つまり、メソッドの戻り値が契約条件で定義されていない場合、ReSharper は null である可能性があると想定します。
備考:
パラメーターが 1 つだけの場合、
paramNameを省略できます(上記の例を参照)パラメーターがない場合は、
paramNameとinputの両方を省略できます:[ContractAnnotation("=> halt")] public void TerminationMethod()または、入力に関係なく関数が同じ出力を持つ場合:
[ContractAnnotation("=> halt")] public void TerminationMethod(object data, bool flag)同じパラメーターに対して複数の条件を追加できます。
[ContractAnnotation("input:null => null; input:notnull=>notnull")] public object Transform(object input, bool flag)条件を逆にすることもできます。つまり、
input => outputはoutput <= inputと等しいです:[ContractAnnotation("null <= surname:null")] public string GetName(string surname)'out' パラメーターの期待値を指定することもできます。 同じ入力条件に対して戻り値と出力パラメーターの両方を指定する場合は、コンマを使用します。
[ContractAnnotation("s:null => false,result:null")] public bool TryParse(string s, out object result)
2026 年 6 月 12 日