小编ben*_*blo的帖子

为什么WeakReference不是一个结构?

正如本文所述:http://www.philosophicalgeek.com/2014/08/14/prefer-weakreferencet-to-weakreference/

如果您正在使用WeakReference,则可能意味着您有点记忆.在这种情况下,分配新的WeakReference对象将产生额外的,不必要的内存压力.

所以在这种情况下,将它变成结构会不会更有意义吗?当我们在它的时候,并且摆脱SetTarget().

.net c# garbage-collection memory-management

7
推荐指数
1
解决办法
382
查看次数

C#:如何从堆栈跟踪中隐藏方法?

我有一个简单的单线方法,我不希望在堆栈跟踪中看到:这可能吗?也许用属性标记它?

只是为了澄清,我不打算在调试器中打印跟踪,重新抛出或自动步进.我希望方法首先不显示在跟踪中,因为跟踪由一些第三方代码处理.我想在运行时控制,我对调试不感兴趣.我这样说是因为我在StackTrace上阅读的大部分内容似乎都是关于这些主题的.

c# attributes stack-trace

5
推荐指数
1
解决办法
1685
查看次数

如何*手动*启动Visual Studio中的上一个成功构建?

我已关闭对话框“构建失败,您是否要启动上一个成功的构建”,并且不想将其重新打开。有没有一种方法可以手动(菜单命令,宏)启动上一个成功的构建,而不必完全启动构建?在我处于编码中间并且破坏了构建的同时(或者只是不想等待下一个编译,无论成功还是失败),向其他人展示某些内容很有用。

在bin文件夹中启动exe不起作用,首先是因为它在build选项中没有当前命令行参数和工作目录设置,其次我得到了断言:显然,它希望附加到调试器(我认为我们在“上次成功构建”对话框中仍然可以看到吗?)。这适用于Visual C ++ 2010。

visual-studio-2010 visual-studio

5
推荐指数
1
解决办法
754
查看次数

有没有一种方法可以对数组排序而不分配任何内存?

我需要非常频繁地对一个较大的集合(上百个/下千个项目)进行排序,即每帧以60 fps的速度(我正在使用Unity)。计算每个项目的密钥有点慢,因此需要将其缓存。

我尝试了各种方法:

  • 具有IComparer的List.Sort(),每次都会计算密钥:超级慢
  • SortedList:速度更快,但是会生成GC分配(30KB /帧):为什么?他们的钥匙盒装了吗(我用了很长时间)?分配的键/值对?如果我将long包装在一个类中,则GC减半,所以我的猜测是“两者”:1个分配给该对,一个分配给该键将值类型装箱...
  • Array.Sort(keyArray,valueArray):太可怕了!缓慢并生成256KB GC /帧!

很遗憾,因为SortedList似乎很适合这项工作,我是否缺少任何无GC的替代方案?

c# unity-game-engine

5
推荐指数
1
解决办法
1856
查看次数