如何使用 Resharper CodeAnnotation 属性指示结果歧义?
How can I indicate result ambiguity with Resharper CodeAnnotation attributes?
使用 Resharper 的代码注释属性,我正在尝试为一种方法编写 ContractAnnotation 属性,如果输入为 null,该方法将始终 return null,但 return null 或一个值(如果输入不为 null)。类似于:
[ContractAnnotation("null => null; notnull => null||notnull")]
我会自己写这个:
[ContractAnnotation("null => null")]
除了根据Contract Annotations in ReSharper 7,这将自动补充一些无效的内容:
null => null
omits the parameter name in cases there is only one parameter. Basically, null => null
means that if the parameter has the value null
, the method return value is also null
. Note also that this annotation is automatically complemented with notnull => notnull
.
如何写ContractAnnotation
属性来表示当输入为notnull
时不能确定return值是什么?
或者,我怎样才能阻止它自动用notnull => notnull
补充我的null => null
注释
加分题:
我怎么能写出类似下面的东西:
[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
至于加分题,[ContractAnnotation("null => true")]
应该就够了。说 bool
-returning 函数可以 return true
或 false
是多余的,因为它不可能 return 其他任何东西。
使用 Resharper 的代码注释属性,我正在尝试为一种方法编写 ContractAnnotation 属性,如果输入为 null,该方法将始终 return null,但 return null 或一个值(如果输入不为 null)。类似于:
[ContractAnnotation("null => null; notnull => null||notnull")]
我会自己写这个:
[ContractAnnotation("null => null")]
除了根据Contract Annotations in ReSharper 7,这将自动补充一些无效的内容:
null => null
omits the parameter name in cases there is only one parameter. Basically,null => null
means that if the parameter has the valuenull
, the method return value is alsonull
. Note also that this annotation is automatically complemented withnotnull => notnull
.
如何写ContractAnnotation
属性来表示当输入为notnull
时不能确定return值是什么?
或者,我怎样才能阻止它自动用notnull => notnull
null => null
注释
加分题:
我怎么能写出类似下面的东西:
[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
至于加分题,[ContractAnnotation("null => true")]
应该就够了。说 bool
-returning 函数可以 return true
或 false
是多余的,因为它不可能 return 其他任何东西。