C# 如何使用Resharper CodeAnnotation属性指示结果模糊性?

C# 如何使用Resharper CodeAnnotation属性指示结果模糊性?,c#,resharper,code-contracts,resharper-8.0,resharper-7.1,C#,Resharper,Code Contracts,Resharper 8.0,Resharper 7.1,使用Resharper的代码注释属性,我试图为一个方法编写一个ContractAnnotation属性,如果输入为null,它将始终返回null,但是如果输入不为null,它将返回null或值。比如: [ContractAnnotation(“null=>null;notnull=>null | | notnull”)] 我会自己写这篇文章: [ContractAnnotation(“null=>null”)] 除了根据,这将自动补充一些无效的内容: null=>null在只有一个参数的情况

使用Resharper的代码注释属性,我试图为一个方法编写一个ContractAnnotation属性,如果输入为null,它将始终返回null,但是如果输入不为null,它将返回null或值。比如:

[ContractAnnotation(“null=>null;notnull=>null | | notnull”)]
我会自己写这篇文章:

[ContractAnnotation(“null=>null”)]
除了根据,这将自动补充一些无效的内容:

null=>null
在只有一个参数的情况下忽略参数名。基本上,
null=>null
意味着如果参数的值为
null
,则方法返回值也是
null
。还请注意,此注释自动由
notnull=>notnull
补充

如何编写
ContractAnnotation
属性,以指示当输入为
notnull
时无法确定返回值是什么

或者,我如何阻止它自动用
notnull=>notnull


奖金问题:

我怎样才能写出以下内容:

[ContractAnnotation(“null=>true;notnull=>true | | false”)]
或者在这种情况下,这就足够了吗,因为它不是自动用反比来补充的

[ContractAnnotation(“null=>true”)]

您可以使用
canbenull

[ContractAnnotation("null => null; notnull => canbenull")]
完整语法为:

FDT      ::= FDTRow [;FDTRow]*
FDTRow   ::= Input => Output | Output <= Input
Input    ::= ParameterName: Value [, Input]*
Output   ::= [ParameterName: Value]* {halt|stop|void|nothing|Value}
Value    ::= true | false | null | notnull | canbenull
FDT::=FDTRow[;FDTRow]*

FDTRow::=输入=>输出|输出谢谢!在阅读文档时,我完全错过了
canbenull
值。你对我上面添加的奖金问题有什么看法?@Ben我添加了奖金问题的答案是的,你是对的,这是多余的,我只是不确定你是否必须明确所有可能的执行路径。