Tag: C#的

xUnit还是NUnit? 对方有什么优点和缺点?

每个框架的优缺点是什么,相互比较? 他们如何与ASP.NET MVC一起工作? 他们如何支持嘲笑?

如果没有新的成员variables与基类相比,C ++是否允许增加派生类的大小?

假设我有一个基类,有一些成员variables,没有虚函数: class Base { int member; }; 以及一个派生类,它以非虚方式从Base派生,并且没有新的成员variables,也没有虚函数: class Derived : Base { }; 显然, sizeof(Derived)不能小于sizeof(Base) 。 sizeof(Derived)需要等于sizeof(Base) ?

C#graphics绘制库?

我正在寻找一个(免费)图书馆,让我画一个CFG (控制stream图)。 像yFiles ,但免费或最好是开源? 理想情况下,这个库允许用户导航graphics(并修改它),即graphics不仅仅是一个静态的先验渲染位图。 想法? 更新: 与提到的QuickGraph库结合的欢乐合唱团似乎工作得很好。 谢谢 Update2: Graph#似乎是目前最强大的库。 还有一个很好的教程 ,如何使用它。

char *和std :: uint8_t之间的reinterpret_cast * – 安全吗?

现在我们都有时需要使用二进制数据。 在C ++中,我们使用字节序列,并且从开始的char是我们的构build块。 定义为sizeof为1,它是字节。 所有的库I / O函数都默认使用char 。 一切都很好,但总是有一点担心,有点怪异的人,一些字节的位数是由实现定义的。 所以在C99中,决定引入几个typedef来让开发人员很容易expression自己的固定宽度的整数types。 可选,当然,因为我们从不想伤害可移植性。 其中, uint8_t作为std::uint8_t (一种固定宽度的8位无符号整数types)迁移到C ++ 11中,对于真正想要使用8位字节的人来说,是最佳select。 因此,开发人员接受了新的工具,并开始构build一些库,表示他们接受8位字节序列,如std::uint8_t* , std::vector<std::uint8_t>或其他。 但是,也许有一个非常深刻的想法,标准化委员会决定不要求实施std::char_traits<std::uint8_t>因此禁止开发人员轻松地实例化std::basic_fstream<std::uint8_t>和轻松读取std::uint8_t s作为二进制数据。 或者,也许,我们中的一些人不关心一个字节的位数,并且对它感到满意。 但不幸的是,两个世界相互碰撞,有时你必须把数据作为char*传递给期望std::uint8_t*的库。 但是,等等,你说,不是charvariables位和std::uint8_t固定为8? 会导致数据丢失吗? 那么这个呢有一个有趣的Standardese。 被定义为char字节和字节是最小的可寻址内存块,所以不能有比char小的位宽的types。 接下来,它被定义为能够保存UTF-8代码单元。 这给我们至less8位。 所以现在我们有一个typedef,它需要8位宽,至less8位宽的types。 但是有其他的select吗? 是的, unsigned char 。 请记住, char签名是实现定义的。 任何其他types? 谢天谢地,不。 所有其他整数types的要求范围不在8位。 最后, std::uint8_t是可选的,这意味着使用这种types的库如果没有定义就不会编译。 但是如果编译呢? 我可以很有把握地说,这意味着我们在一个8位字节和CHAR_BIT == 8 。 一旦我们有了这个知识,我们有8位字节, std::uint8_t被实现为char或unsigned char ,我们可以假设我们可以从char*执行reinterpret_cast到std::uint8_t* ,反之亦然? 它是否便携? 这是我的Standardese阅读技能使我失望的地方。 我读了安全派生的指针( […]

当我将long int分配给C中的int时会发生什么?

在最近的作业任务中,我被告知使用longvariables来存储结果,因为它可能是一个很大的数字。 我决定检查一下对我来说真的很重要,在我的系统上(intel core i5 / 64-bit windows 7 / gnu gcc compiler),发现下面的代码: printf("sizeof(char) => %d\n", sizeof(char)); printf("sizeof(short) => %d\n", sizeof(short)); printf("sizeof(short int) => %d\n", sizeof(short int)); printf("sizeof(int) => %d\n", sizeof(int)); printf("sizeof(long) => %d\n", sizeof(long)); printf("sizeof(long int) => %d\n", sizeof(long int)); printf("sizeof(long long) => %d\n", sizeof(long long)); printf("sizeof(long long int) => %d\n", sizeof(long long int)); 产生以下输出: […]

为什么大多数STL实现中的代码如此复杂?

STL是C ++世界的重要组成部分,大多数实现都是由Stepanov和Musser最初的努力所衍生出来的。 我的问题是代码的关键性,它是人们查看编写良好的C ++的例子,敬畏和学习的主要来源之一:为什么STL的各种实现如此令人厌恶地看着 – 令人费解和一般很好的例子,从美学的angular度来看如何不写C ++代码。 下面的代码示例不会在我工作的地方通过代码审查,因为variables命名,布局,macros和使用操作符的原因不尽相同,因为这些操作符需要的不仅仅是简单的一瞥,而是要查明实际发生的事情。 template<class _BidIt> inline bool _Next_permutation(_BidIt _First, _BidIt _Last) { // permute and test for pure ascending, using operator< _BidIt _Next = _Last; if (_First == _Last || _First == –_Next) return (false); for (; ; ) { // find rightmost element smaller than successor _BidIt _Next1 = […]

为什么堆栈内存大小如此有限?

在堆上分配内存时,唯一的限制是可用RAM(或虚拟内存)。 它使记忆的Gb。 那么为什么堆栈大小如此有限(大约1 Mb)呢? 什么技术原因阻止你在栈上创build真正的大对象? 更新 :我的意图可能不清楚,我不想在堆栈上分配巨大的对象,我不需要更大的堆栈。 这个问题只是纯粹的好奇心。

C ++中“using”关键字的逻辑是什么?

C ++中“using”关键字的逻辑是什么? 它用于不同的情况,我试图找出是否所有这些都有共同的东西,有一个原因,为什么使用“使用”的关键字。 using namespace std; // to import namespace in the current namespace using T = int; // type alias using SuperClass::X; // using super class methods in derived class

容量是否被复制到vector中?

采取以下代码: std::vector<int> a; a.reserve(65536); std::vector<int> b(a); //NOTE: b is constructed from a a.reserve(65536); // no reallocation b.reserve(65536); 容量是否被复制? 最后一行是否会重新分配? 这个标准是否对此有任何说明还是保持沉默?

开放源代码的HTML到PDF呈现器全CSS支持

我问过在这之前让iTextSharp从HTML和CSS表格中呈现一个PDF,但似乎这可能是不可能的…所以我想我将不得不尝试其他的东西。 有没有一个开源的.NET / C#库,可以把HTML 和 CSS作为input,并正确渲染? 我必须重申…图书馆必须是免费的,最好是有相当自由的许可证。 我在这里基本没有预算。