Tag: overflow

为什么FxCop警告此C#代码中的溢出(CA2233)?

我有以下函数从高字节和低字节获取一个int: public static int FromBytes(byte high, byte low) { return high * (byte.MaxValue + 1) + low; } 当我使用FxCop分析程序集时,我收到以下严重警告: CA2233:OperationsShouldNotOverflow 如果没有首先validation操作数以防止溢出,则不应进行算术运算。 我无法看到这可能会溢出,所以我只是假设FxCop过于热心。 我错过了什么吗? 我可以采取哪些步骤来纠正我所拥有的(或至少使FxCop警告消失!)?

溢出exception正在抛出 – 即使该值超出限制

为什么以下代码将输出设为-2而不是抛出overflow exception ? long x = long.MaxValue; long y = long.MaxValue + x;

内存溢出:拥有越来越多的Microsoft.CSharp.RuntimeBinder.Semantics

我们正在寻找应用程序中的一些内存泄漏,在进行一些操作(在我们的应用程序中加载和关闭一个项目)时,我们知道内存总是增加一点点。 我们已经找到了很多它们,但是现在,10个以上增加最多的类是(根据我们的工具,ANTS Memory Profiler 8.2): Microsoft.CSharp.RuntimeBinder.Semantics.SYMTBL +键 Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol Microsoft.CSharp.RuntimeBinder.Semantics.CONSTVAL Microsoft.CSharp.RuntimeBinder.Semantics.EXPRCONSTANT Microsoft.CSharp.RuntimeBinder.Semantics.EXPRCLASS Microsoft.CSharp.RuntimeBinder.Semantics.EXPRTYPEOF Microsoft.CSharp.RuntimeBinder.Semantics.EXPRLIST Microsoft.CSharp.RuntimeBinder.Semantics.MethWithInst Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults Microsoft.CSharp.RuntimeBinder.Semantics.EXPRMEMGRP Microsoft.CSharp.RuntimeBinder.Semantics.EXPRCALL Microsoft.CSharp.RuntimeBinder.Semantics.EXPRWRAP Microsoft.CSharp.RuntimeBinder.Semantics.AggregateDeclaration Microsoft.CSharp.RuntimeBinder.Semantics.Scope 不幸的是,我不是这个,所以我有点难以找到我应该释放的内容。 我检查了实例树,但是它一直都是微软的东西。 问题在于,当我们对项目进行“打开/关闭”时,我们会经历很多(大部分)代码。 编辑我们的应用程序的一部分使用dynamic关键字作为某些资源,它可能是链接的。 这里的课程不是Disposable,我应该和他们做些什么吗? 编辑2 我很确定这与我的dynamic相关,似乎C#在使用动态时创建了一个缓存。 但目前我不知道为什么它会增长(我一直加载相同的类,我将始终拥有完全相同的签名),也不知道如何清除它。