首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在c#编码中告诉外部方法永远不会返回null?

如何在c#编码中告诉外部方法永远不会返回null?
EN

Stack Overflow用户
提问于 2015-05-11 16:37:03
回答 1查看 186关注 0票数 0

我有以下c#代码:

代码语言:javascript
运行
复制
myClaimsIdentity.FindFirst(ClaimTypes.NameIdentifier).Value;

CodeContract知道myClaimsIdentity从来不是空的。但是它抱怨FindFirst(string)方法可能返回null:

警告CodeContracts:可能对空引用调用方法。您期望System.Security.Claims.ClaimsIdentity.FindFirst(System.String)返回非空值吗?

我确实期待这一点,但我如何才能告诉CodeChecker呢?当然,我不能更改FindFirst(string),因为它来自外部库。

EN

Stack Overflow用户

回答已采纳

发布于 2015-05-12 07:20:57

简单的方法是:

代码语言:javascript
运行
复制
var nameIdentifier = myClaimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
Contract.Assume(nameIdentifier != null);
nameIdentifier.Value;

代码契约不会试图证明Assume条件,而是在验证其他需求时使用它。

可能可以为具有适当的Ensures后置条件的外部代码创建契约引用程序集。代码契约团队为BCL类型执行此操作。但我不知道该怎么做。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30173070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档