Tag: C#的

C / C ++中的最小双精度值

在C(++)程序中是否有标准和/或可移植的方式来表示最小的负值(例如使用负无穷大)? float.h中的DBL_MIN是最小的正数。

Castle DynamicProxy – 创build代理涉及用作GTR的GTP时失败

好的,现在我真的很困惑。 我原本就有这个问题 ,根据海报,Castle.DynamicProxy的版本被ILMerged到最新的Rhino.Mocks库中。 根据这个问题,有几个权威人士已经在最新的城堡里定下了这个图书馆,但是这个图书馆并没有把它变成一个新的犀牛。 大多数人都在说“只要下载Rhino源码和最新的Castle,build立你自己的版本”。 所以,我就是这么做的。 我从Ayende的GitHub抓取了犀牛干货源的一个ZIP,打开它,然后build立它。 然后,就像一个很好的TDDer,我创build了一个unit testing,以确保我的更改能够正常工作(因为最新的Castle将DynamicProxy折叠到Core中,需要一些重要的引用更改): [Test] public void MockOfInterfaceMethodWithInterfaceGTR() { var mock = mocks.DynamicMock<ITestRestrictedInterface>(); Assert.NotNull(mock); Expect.Call(mock.TestMethod(new Object2())).IgnoreArguments().Return(5); mocks.ReplayAll(); Assert.AreEqual(5, mock.TestMethod(new Object2())); } … internal interface ITestGenericInterface<TRest> where TRest:IObject1 { int TestMethod<T>(T input) where T : TRest; } internal interface ITestRestrictedInterface:ITestGenericInterface<IObject2> { } internal interface IObject1 { } internal interface IObject2:IObject1 { […]

如何加速项目添加到ListView?

我将几千(例如53,709)项目添加到WinForms ListView。 尝试1 : 13,870 ms foreach (Object o in list) { ListViewItem item = new ListViewItem(); RefreshListViewItem(item, o); listView.Items.Add(item); } 这运行非常糟糕。 明显的第一个修复是调用BeginUpdate/EndUpdate 。 尝试2 : 3,106 ms listView.BeginUpdate(); foreach (Object o in list) { ListViewItem item = new ListViewItem(); RefreshListViewItem(item, o); listView.Items.Add(item); } listView.EndUpdate(); 这样比较好,但是还有一个数量级太慢了。 让我们分开创buildListViewItems和添加ListViewItems,所以我们find了真正的罪魁祸首: 尝试3 : 2,631 ms var items = new […]

比较悬挂指针是合法的吗?

比较悬挂指针是合法的吗? int *p, *q; { int a; p = &a; } { int b; q = &b; } std::cout << (p == q) << '\n'; 注意p和q如何指向已经消失的对象。 这是合法的吗?

使用发射与调用信号,就好像它是Qt中的常规函数​​一样

比方说,我有这个信号: signals: void progressNotification(int progress); 我最近才了解到Qt中的emit关键字。 到目前为止,我习惯于像普通函数那样调用它们来执行信号。 所以,而不是: emit progressNotification(1000 * seconds); 我会写: progressNotification(1000 * seconds); 像这样调用它们似乎是行得通的,所有连接的插槽都会执行,那么使用emit关键字会导致不同的行为,还是只是语法糖?

控制台应用程序中的可靠计时器

我知道在.NET中有三种计时器types(请参阅比较.NET Framework类库中的计时器类 )。 我select了一个线程计时器,因为如果主线程忙,其他types可能会漂移,我需要这是可靠的。 这个计时器在定时器控制中的工作方式被放在另一个线程上,所以当它不忙时,它可以随着在父线程上完成的工作一起打勾。 这个计时器在控制台应用程序中的问题是,当计时器在另一个线程上滴答时,主线程没有做任何事情,所以应用程序closures。 我试着添加一个while true循环,但是当定时器closures的时候,主线程太忙了。

为什么C ++ 11不支持指定的初始化列表作为C99?

考虑: struct Person { int height; int weight; int age; }; int main() { Person p { .age = 18 }; } 上面的代码在C99中是合法的,但在C ++ 11中不合法。 C ++ 11不支持这种方便的function的原因是什么?

find包含未使用的标题的工具?

我知道PC-Lint可以告诉你有关包含但未使用的标题。 有没有其他工具可以做到这一点,最好在Linux上? 我们有一个很大的代码库,在过去的15年里,有大量的function可以移动,但是当function从一个实现文件移动到另一个时,很less会有剩余的#include指令被删除,这一点让我们感到非常好。 我明显可以做的是去除所有的#include指令,并让编译器告诉我要重新包含哪些内容,但是我宁愿解决这个问题 – find未使用的问题 – 而不是重build一个已经使用过的列表。

是否有可能“存储”模板参数包,而不扩大它?

当我偶然发现这个问题时,我正在试验C ++ 0x variadic模板: template < typename …Args > struct identities { typedef Args type; //compile error: "parameter packs not expanded with '…' }; //The following code just shows an example of potential use, but has no relation //with what I am actually trying to achieve. template < typename T > struct convert_in_tuple { typedef […]

在理论上,C ++实现是否可以并行处理两个函数参数的评估?

给定以下函数调用: f(g(), h()) 因为函数参数的求值顺序是未指定的(就我所知,仍然是C ++ 11中的情况),理论上可以并行执行g()和h()吗? 这种平行化只能在g和h被认为是相当平凡的(在最明显的情况下,只访问他们身体本地的数据),以避免引入并发问题,但除此之外,我看不到什么禁止它。 那么,标准允许吗? 即使只通过as-if规则? (在这个答案中 ,曼卡塞尔否认了这一点 ,但是他没有引用这个标准,而且我对[expr.call]也没有显示出任何明显的措词。