Tag: C#的

为什么代码会通过空指针显式调用静态方法?

我在几个旧的项目中看到过这样的代码: class Class { static void Method() {} }; ((Class*)0)->Method(); 此代码包含未定义的行为,因为它包含解引用空指针(不pipe之后会发生什么)。 这真的没有任何意义 – 在那里将types名称提供给编译器,而编写上面代码的人可以写下这个代码: Class::Method(); 后者会好的。 为什么会有人写前代码? 这是一个很好的旧时代的成语吗?

传递一个省略号给另一个可变参数

我有大约30个可变参数function。 每个人都接受一个path作为最后的参数,例如: bool do_foo(struct *f, int q, const char *fmt, …) 在每个函数中,我必须检查扩展的格式小于或等于一定的大小。 所以,我发现自己复制/粘贴相同的代码块来检查有多less个字符vsnprintf()没有打印,相应地设置errno并从写入中退出。 我想要做的是写一个函数来做到这一点,这将返回一个已知是安全大小的静态分配(扩展)的string,或者失败时新初始化的string,可以检查NULL。 检查还必须确定string是绝对path还是相对path,这会影响string的安全大小。 这是很多重复的代码,它开始闻起来。 有没有一种方法可以将我的函数入口中的elipsis的内容传递给另一个函数? 或者我必须先调用va_start() ,然后将va_list传递给辅助函数? 编辑: 我完全不反对把va_list传递给帮手,我只是想确保没有其他的东西存在。 在我看来,编译器明白可变参数开始的位置,所以我只是好奇,如果我能告诉它通过它们。

Visual Studio 2010支持哪些C ++ 11function?

有一个海湾合作委员会的名单 ; 有没有一个类似的列表Visual Studio 2010?

为什么CUDA固定内存如此之快?

当我使用固定内存进行CUDA数据传输时,我观察到数据传输速度大幅提升。 在linux上,实现这个的底层系统调用是mlock。 从mlock的手册页,它指出,locking页面防止被换出: mlock()locking从addr开始的地址范围内的页面并继续len字节。 当呼叫成功返回时,包含指定地址范围一部分的所有页面保证驻留在RAM中; 在我的testing中,我的系统上有几个空闲的内存,所以从来没有任何内存页可能被换掉的风险,但我仍然观察到加速。 任何人都可以解释这里发生了什么?任何洞察力或信息非常感谢。

const的正确性能提高性能吗?

我已经读过无数次,在C或C ++代码中强制执行const-correctness不仅是可维护性的一个良好实践,而且还可以让您的编译器执行优化。 不过,我也读过完全相反的东西 – 它根本不影响性能。 因此,你有没有常量正确性可以帮助你的编译器提高你的程序性能的例子?

构造函数抛出exception时运行哪些析构函数?

在C ++中,如果构造函数抛出一个exception,什么析构函数运行? 特别是,如果在初始化列表或主体期间发生exception,它会有什么区别吗? 另外,inheritance和成员呢? 大概所有完成的build筑被破坏。 如果只有一些成员构build,只有那些被破坏? 如果有多重inheritance,那么所有完成的构造函数是否被破坏? 虚拟inheritance是否改变了什么?

如何使用NUnittesting与数据库相关的代码?

我想用NUnit编写unit testing,命中数据库。 我想让每个testing的数据库处于一致的状态。 我认为交易可以让我“撤销”每一个testing,所以我search了一下,发现了2004 – 05年的几篇文章: http://weblogs.asp.net/rosherove/archive/2004/07/12/180189.aspx http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx http://davidhayden.com/blog/dave/archive/2004/07/12/365.aspx http://haacked.com/archive/2005/12/28/11377.aspx 这些似乎解决了实现NUnit的自定义属性,它构build了在每次执行testing之后回滚数据库操作的能力。 这很好,但… 这个function本身是否存在于NUnit的某个地方? 这种技术在过去的4年中有所改进吗? 这仍然是testing数据库相关代码的最好方法吗? 编辑:这不是我想特别testing我的DAL,而是我想testing与数据库交互的代码段。 对于这些testing是“不接触”和可重复的,如果我可以在每一个之后重置数据库,这将是非常棒的。 而且,我想把这个放到一个现在没有testing地点的现有项目中。 出于这个原因,我实际上无法为每个testing编写一个从头开始的数据库和数据。

为什么要把一个exception作为引用到const?

我已经多次听说过,最好能把一个exception作为const引用而不是引用来引用。 为什么是 try { // stuff } catch (const std::exception& e) { // stuff } 比…更好 try { // stuff } catch (std::exception& e) { // stuff }

为什么可以在基类中实现一个接口方法?

在我的项目中,我发现了一个奇怪的情况,在C#中似乎完全有效,因为我没有编译时错误。 简单的例子看起来像这样: using System; using System.Collections.Generic; namespace Test { interface IFoo { void FooMethod(); } class A { public void FooMethod() { Console.WriteLine("implementation"); } } class B : A, IFoo { } class Program { static void Main(string[] args) { IFoo foo = new B(); foo.FooMethod(); } } } 这样的代码编译。 但是请注意, A不是IFoo , B不实现IFoo方法。 在我的情况下,意外(重构后), […]

Ninject模块的意图是什么?

我是一个完全新手ninject 我一直在拉别人的代码,发现nInject模块的几个实例 – 从Ninject.Modules.Module派生的类,并有一个包含他们大部分代码的加载方法。 通过调用StandardKernel实例的LoadModule方法并将其传递给模块类的一个实例来调用这些类。 也许我错过了这里明显的东西,但是这只是创build一个普通的旧类和调用它的方法,或者也许静态类与静态方法的好处是什么?