首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >CodeContracts“必需”理解

CodeContracts“必需”理解
EN

Stack Overflow用户
提问于 2013-07-24 08:48:51
回答 2查看 512关注 0票数 5

我尝试使用以下代码对检索到的实体启用某种非空检查,以确保它们在执行某些具体业务之前是存在的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
protected T GetRequired<T>(object id)
    where T : EntityObject
{
    var obj = Get<T>(id);
    Contract.Requires<ArgumentNullException>(obj != null);
    return obj;
}

但在编译时,我得到了:

After contract block, found use of local variable 'obj' defined in contract block

我是不是用错了Contract.Requires

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-24 08:57:23

我是不是用错了Contract.Requires

是的,你是。Contract.Requires是指说明方法(或属性)的先决条件。如果要继续进行方法调用,这些条件必须是真的,否则就违反了约定。

让我们看看您的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var obj = Get<T>(id);
Contract.Requires<ArgumentNullException>(obj != null);

在这里,您试图使用它来确保在方法完成执行(在本例中是Get方法)之后,某些内容是真的。这将是一个后置条件,为此,您将在Contract.Ensures的主体Get中使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
protected T Get<T>(object id) {
    Contract.Ensures(Contract.Results<T>() != null);
    // get and return result
}

最后,此编译器错误

在契约块之后,发现使用了在合同块中定义的局部变量obj

此消息是以下事实的结果:您不能在契约块之后使用Contract,并且契约块仅出现在方法主体的顶部。

票数 6
EN

Stack Overflow用户

发布于 2013-07-24 08:54:20

在这里,你似乎想同时做几件事:

应该在输入参数上直接使用Contract.Requires,例如,如果id永远不为null,那么就这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Contract.Requires<ArgumentNullException>(id != null);

此外,您似乎希望保证结果不是null。这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Contract.Ensures(obj != null);

类似地,辅助方法(Get)也可以检查其他契约。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17840172

复制
相关文章
短期记忆容量必需有限
短期保持信息的能力可能是人类认知的一个标志, 因为它是许多领域所需要的,如感知、行动计划和语言。没有大脑的这一核心功能,人类无法思考、推理或计算,甚至可能无法感知。尽管短期记忆(STM)的概念通常仅指信息的存储,但工作记忆被认为涉及额外的执行过程,如信息的整合和处理, 并被认为支持复杂的认知活动,如语言处理、推理和问题解决(Baddeley,2003)。
CreateAMind
2022/04/15
5240
短期记忆容量必需有限
87-OOP之必需掌握的magic
class Book: def __init__(self, title, author, pages): self.title = title self.author = author self.pages = pages def __str__(self): return '《%s》' % self.title def __call__(self): print('《%s》is written b
凯茜的老爸
2018/09/11
3710
选择云服务厂商:信息隐私政策是必需
一个良好的云供应商隐私政策不仅应该含有物理和逻辑安全,还要有地理和人员方面的约束。 当涉及到选择云服务厂商时,首先你要做的事情是弄清楚他们确实拥有信息隐私政策,发布在某个位置你是可以找到的,且它解决了你的问题。另外,它是否可以在线使用,并且在需要时进行更新。有些,政策可以促进你考虑一些他们以前没有想到的事情。 云隐私政策应用重点关注的地方是物理和逻辑安全。但同样重要的是身份管理和访问控制,这些政策是专门给可以访问您的数据的人。 你还应该关注对于不同的地理位置有哪些相关政策。例如,如果的数据无法离开美国,那么
静一
2018/03/20
9990
Babel还是Node开发的“必需品”吗?
现在做 Node 开发还需要“麻烦”的 Babel 吗?毋庸置疑,Babel 曾经对构建和开发 Node.js 应用程序有过很大的影响,但随着 Node.js 的原生功能不断强大,Babel 或许也不再是 Node 开发的“必需品”。本文将主要介绍关于如何在 Node 开发中摆脱 Babel 的方法。
coder_koala
2019/09/25
9250
Babel还是Node开发的“必需品”吗?
Java程序员必需掌握的 4 大基础!
大概每个人在学生时代开始就使用Java了,我们一直在学习Java,但Java中总有一些概念含混不清,不论是对初级还是高级程序员都是如此。所以,这篇文章的目的就是弄清楚这些概念。
Java技术栈
2019/12/17
3840
Java程序员必需掌握的 4 大基础!
数据分析项目成功的必需因素都有哪些?
在当今的大数据时代,利用数据科学理论进行数据分析起着越来越重要的作用。探讨不同数据技巧类型和熟练程度对相关项目有着怎样的影响也开始具有重要意义。近日,AnalyticsWeek的首席研究员、Bussiness Over Broadway的总裁Bob Hayes博士就公开了研究数据分析项目成功所必需技能的相关结果。Bob所提出的基于技能的数据科学驱动力矩阵方法,可以指出最能改善数据科学实践的若干技能。 数据技能的熟练程度 首先,Bob在AnalyticsWeek的研究包含了很多向数据专家提出的,有关技能、工作
CDA数据分析师
2018/02/11
8370
达到年薪 40W 必需掌握的技术。
很多人在问我,程序员如何拿高薪,如何做到年薪40W+,其实总结出来还是一句话,你的技术决定你的能力已经薪资。
Java技术栈
2018/07/31
4000
Kubernetes 确实很强,但你未必需要它!
作者 | aly kafoury、译者 | 弯月、出品 | CSDN 我在软件行业摸爬滚打了十余年,形形色色的角色都担任过。以前,遇到一些新兴的工具,人们会认真比较优缺点,而如今却变成了无脑跟着潮流走。 Kubernetes 就是其中之一。如今,在 Kubernetes 上托管应用程序已成为部署应用程序的标准,而无论 Kubernetes 能否带来切实的好处。我希望通过本文,说明使用 Kubernetes 的缺点, Kubernetes 对软件开发周期的破坏、成本的增加,以及对敏捷性的负面影响,从而唤醒软件
程序猿DD
2023/04/04
1860
Kubernetes 确实很强,但你未必需要它!
Python基础(四):Python必需掌握基础注释、变量、输出
举例体验:我们去图书馆读书,怎么样快速找到⾃⼰想要的书籍呢?是不是管理员提前将书放到固定位置,并把这个位置进⾏了编号,我们只需要在图书馆中按照这个编号查找指定的位置就能找到想要的书籍。
Lansonli
2022/12/01
1.1K1
Python基础(四):Python必需掌握基础注释、变量、输出
JavaWeb必需掌握的知识点(最全 精美版)
⑵ CS优点 1. 交互性强 2. 存取模式安全 3. 网络通信量低 4. 响应速度快 5. 利于处理大量数据 CS缺点: ● 需要专门的客户端安装程序,分布功能弱, ●兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。 ●开发、维护成本较高,发生一次升级,则所有客户端的程序都需要改变。。 ●用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户.
CaesarChang张旭
2021/01/26
5480
JavaWeb必需掌握的知识点(最全 精美版)
未来数据中心网络必需的三大件
短短几年间,很多人从不知道什么是SDN、Trill、VXlan,对这些技术不屑一顾,到现在几乎每个数据中心都在谋求转型,每个从事信息技术的人如果还不知道这些单词是什么就Out了,就像这年头还不用微信一
SDNLAB
2018/04/03
7990
未来数据中心网络必需的三大件
基因日签【20210629】snRNA是剪接所必需的
除U6外,所有的snRNP都含有一段保守序列,它能够与Sm蛋白结合,后者是一种能被自身免疫病所产生的抗体识别的蛋白质。
尐尐呅
2022/03/31
4200
基因日签【20210629】snRNA是剪接所必需的
Java云开发:开发人员必需了解的知识
如果你是一个Java开发人员和你的组织是跳到云计算潮流,你必须改变你构建和部署应用程序的方式。在这篇文章中,我将研究什么是在商店为您与每个云交付模型和公共和私有云场景。 云计算交付模式:IaaS,PaaS和SaaS 云基础设施的交付模型可以大致归类为基础设施作为服务(Iaas)、平台即服务(PaaS)或软件即服务(SaaS)。 基础设施即服务(IaaS) 云计算供应商提供基础设施服务,如电脑、存储设备和路由器部署您的应用程序。这是一个不是一个新概念。GoDaddy主机托管等公司提供基础设施主办网站中小企业
用户1289394
2018/02/27
1.8K0
Java云开发:开发人员必需了解的知识
运维是必需品,安全是奢侈品
安全,一直是大部分公司想引起重视,又不引起重视的存在。想引起重视的原因是安全问题不断出现,经常会听到某某云厂商的服务器不可用了,某某公司的服务器被入侵了,某某公司的数据库被前员工删了,层出不穷的安全问题让安全人员防不胜防。
没有故事的陈师傅
2022/12/06
1K0
零信任时代安全沙箱成为企业应用必需品
云计算,就是你把自己的业务给实现成了软件(你管它叫“信息化”也行、“数位化”也行),然后“租赁”了第三方的硬件与网络资源去运行这些软件,以服务你的客户、合作伙伴。也就是说,把自己的代码化数字内容资产,托管、运行在第三方空间里。
Onegun
2022/10/20
1.2K0
零信任时代安全沙箱成为企业应用必需品
Mono 2.8发布:C#4.0和更好的性能
在社区很多人不看好的微软.NET开源实现Mono发布了Mono 2.8,这是一个重要的版本更新,有着显著的改善,Mono 2.8包括C#4.0的支持(也是现在的默认配置),新一代的垃圾回收器,新的框架,LLVM的支持,目前被认为是稳定的,2.0版本的embedding API ,对OpenBSD的支持,移除了对GLib的依赖,并有.NET 2.0的线程池的异常行为。 新的微软的开源协议的框架包括ASP.NET 4.0,并行框架,System.XAML,System.Dynamic,Managed E
张善友
2018/01/30
7820
数据分析师必需具备的10种分析思维
一、逻辑思维 逻辑思维即明白价值链,明白各项数据中的关系; 该方法的关键在于明白其中的关系要求你对这项工作要了解、熟悉,要细致和慎密,要清楚充分性和必要性的关系。实际上也就是指:你需要那些数据?如何
用户1756920
2018/06/20
9860
优思学院|盘点,精益生产25个工具!【必需收藏】
精益生产方法需要一种全面的方法才能有效实施。精益这个概念是每个接触产品供应链的人都要实践的,无论是在计划方面还是在分析方面。
用户2865703
2023/03/07
7730
优思学院|盘点,精益生产25个工具!【必需收藏】
数据分析师必需具备的10种分析思维
一、逻辑思维 逻辑思维即明白价值链,明白各项数据中的关系; 该方法的关键在于明白其中的关系要求你对这项工作要了解、熟悉,要细致和慎密,要清楚充分性和必要性的关系。 实际上也就是指:你需要那些数据?如何
小莹莹
2018/04/20
8940
数据分析师必需具备的10种分析思维
你必需知道的10个 Nginx 常用命令
Nginx是一个免费、开源、高性能、可伸缩、可靠、功能全面且流行的 HTTP和反向代理服务器,一个邮件代理服务器,以及通用的 TCP/UDP 代理服务器。
木禾wen
2019/11/27
7381
你必需知道的10个 Nginx 常用命令

相似问题

CodeContracts问题

30

CodeContracts -误报

40

MissingFieldException与CodeContracts

13

理解TransactionScopeOptions: RequiresNew =禁止+必需?

10

特定通用接口的CodeContracts

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文