Tag: C#的

委托关键字与lambda表示法

一旦编译完成,是否有区别: delegate { x = 0; } 和 () => { x = 0 } ?

.NET中ref和out参数的区别

在.NET中ref和out参数有什么区别? 有什么可以比另一个更有用的情况? 什么是一个代码片段,其中一个可以使用,另一个不能?

vector与STL中的列表

我注意到有效的STL vector是默认应该使用的序列的types。 这是什么意思? 似乎忽略效率vector可以做任何事情。 任何人都可以向我提供一个场景, vector不是一个可行的select,但必须使用list ?

何时使用内联函数以及何时不使用它?

我知道内联是一个提示或请求编译器,它用于避免函数调用的开销。 那么在什么基础上可以确定函数是否是内联的候选者? 在这种情况下,应该避免内联?

如何debugging堆损坏错误?

我在Visual Studio 2008下debugging了一个(本地)multithreadingC ++应用程序。在看似随意的场合,我得到一个“Windows引发了一个断点…”的错误,并注意到这可能是由于堆。 这些错误不会总是使应用程序崩溃,尽pipe它很可能会在之后崩溃。 这些错误的主要问题是,只有在实际发生了腐败之后才会popup,这使得它们非常难以跟踪和debugging,特别是在multithreading应用程序中。 什么样的事情会导致这些错误? 我如何debugging它们? 提示,工具,方法,启示…是受欢迎的。

C ++标准是否要求iostream的性能很差,或者我只是处理一个糟糕的实现?

每当我提到C ++标准库iostream的性能下降时,我都会有一阵怀疑的感觉。 然而,我的profiler结果显示在iostream库代码中花费了大量的时间(完全编译器优化),并且从iostreams切换到特定于OS的I / O API和自定义缓冲区pipe理确实给了一个数量级的改进。 C ++标准库在做什么额外的工作,这是标准所要求的,在实践中是否有用? 还是做一些编译器提供与手动缓冲区pipe理相竞争的iostream的实现? 基准 为了让问题得以解决,我写了一些简短的程序来实现iostream的内部缓冲: 把二进制数据放入ostringstream http://ideone.com/2PPYw 把二进制数据放入char[]缓冲区http://ideone.com/Ni5ct 使用back_inserter http://ideone.com/Mj2Fi将二进制数据放入一个vector<char> 新 : vector<char>简单迭代器http://ideone.com/9iitv 新增function :将二进制数据直接放入stringbuf http://ideone.com/qc9QA 新 : vector<char>简单的迭代器加边界检查http://ideone.com/YyrKy 请注意, ostringstream和stringbuf版本运行较less,因为它们速度较慢。 在ideone上, ostringstream比std:copy + back_inserter + std::vector慢大约3倍,比memcpy慢大约15倍。 当我将我的真实应用程序切换到自定义缓冲时,这与之前和之后的分析感觉一致。 这些都是内存中的缓冲区,所以iostreams的缓慢不能归咎于慢速磁盘I / O,太多的冲洗,与stdio同步,或任何其他的事情人们用来原谅慢C ++标准库iostream的。 能够看到其他系统的基准testing以及常见实现的评论(如gcc的libc ++,Visual C ++,Intel C ++)以及标准要求的开销是多less。 这个testing的基本原理 许多人正确地指出,iostream更常用于格式化输出。 但是,它们也是二进制文件访问的C ++标准提供的唯一现代API。 但是,对内部缓冲进行性能testing的真正原因适用于典型的格式化I / O:如果iostream不能保持磁盘控制器提供的原始数据,那么当它们负责格式化时,它们如何保持可用? 基准时间 所有这些都是外部( k )循环的迭代。 […]

在.NET中比较两个字节数组

我怎么能做到这一点? 当然,我可以这样做: static bool ByteArrayCompare(byte[] a1, byte[] a2) { if (a1.Length != a2.Length) return false; for (int i=0; i<a1.Length; i++) if (a1[i]!=a2[i]) return false; return true; } 但是我正在寻找一个BCLfunction或一些高度优化的经过validation的方式来做到这一点。 java.util.Arrays.equals((sbyte[])(Array)a1, (sbyte[])(Array)a2); 很好地工作,但它看起来不会像x64一样工作。 请注意我的超快速答案。

如何通过.NET / C#findCPU核心的数量?

有没有办法通过.NET / C#来找出CPU核心的数量? PS这是一个直接的代码问题,而不是“我应该使用multithreading?” 题! 🙂

entity framework.Remove()与.DeleteObject()

您可以使用以下两种方法使用EF从数据库中删除项目。 EntityCollection.Remove方法 ObjectContext.DeleteObject方法 第一个是EntityCollection ,第二个是ObjectContext 。 什么时候应该使用? 一个人比另一个人更喜欢吗? Remove()返回一个bool , DeleteObject()返回void 。

推荐的ServiceStack API结构

我正在尝试构build我们的API的最佳方式; 我们有评论,我们已经build立了一个标准的REST结构(列表一,列出所有,创build,更新等)。 不适合的例子是:每个评论可以链接到一个或多个其他types,例如事件,位置或事物。 我的想法是这些url将沿着:/事件/评论/(或这个例如/评论/事件/相反)/位置/评论/ /事情/评论/ 但是,我可以看到的问题是每个这些“GET”应返回父对象,即一个事件。 所以使用ServiceStack,处理这种情况的最好方法是什么? 它是为每个数据请求创build一个自定义服务,而不是滥用开箱即用的REST设置,或者我错过了更基本的东西?