与 null 比较时的 C# Contract.Result 类型
令人烦恼的是 Contract.Result 在某些情况下无法计算出其类型。请参阅下面的手册摘录。
方法返回值 在后置条件中,可以通过表达式
Contract.Result
引用方法的返回值,其中 T 替换为返回类型该方法的。当编译器无法推断类型时,必须显式给出它。 例如,C# 编译器无法推断不带任何参数的方法的类型。()
我注意到代码片段 cen
生成 Contract.Ensures(Contract .Result
突出显示字符串以进行编辑。
我是否遗漏了一些东西,或者我可以在与 null 进行比较时将类型设置为 Object 吗? 即Contract.Ensures(Contract.Result
It is annoying than Contract.Result can not work out its type in some situations. See extract from manual below.
Method Return Values Within postconditions the method's return value can be referred to via the expression
Contract.Result<T>()
, where T is replaced with the return type of the method. When the compiler is unable to infer the type it must be explicitly given. For instance, the C# compiler is unable to infer types for methods that do not take any arguments.
I have noticed that code snippet cen
produces Contract.Ensures(Contract.Result<String>() != null);
With String highlighted for edit.
Am I missing something, or can I just set the type to Object when comparing to null.
i.e. Contract.Ensures(Contract.Result<Object>() != null);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我本以为根据 OO 理论是这样的。如果我们有可为空的类型。那么 null 符合所有(可空)类型。因此它应该有效,所以我编写了下面的测试。
所有测试都通过了。
I would have thought that according to OO theory. That if we have nullable types. Then null conforms to all (nullable) types. Therefore it should work, so I wrote the tests below.
All tests passed.