Tag: C#的

什么是C + +混合风格?

我刚刚遇到了这个关键字C++ Mixin-Style ,有谁知道这是什么? 在这篇文章中 ,已经被作为devise模式回答了。 它是否与本文档中描述的devise模式相同?

在C / C ++中通过双精度运算保证浮点数是否保留?

假设符合IEEE-754标准 ,是一个保证通过双重运输保留的浮法? 换句话说,下面的断言总会被满足吗? int main() { float f = some_random_float(); assert(f == (float)(double)f); } 假设f可以获得IEEE定义的任何特殊值,如NaN和Infinity。 根据IEEE的说法,是否有这样的情况,即assert会得到满足,但是在通过双重传输之后,确切的比特级表示不会被保留下来? 代码片段在C和C ++中都是有效的。

正确的方法来投射指针types

考虑下面的代码 (以及VirtualAlloc()返回一个void* )的事实: BYTE* pbNext = reinterpret_cast<BYTE*>( VirtualAlloc(NULL, cbAlloc, MEM_COMMIT, PAGE_READWRITE)); 为什么selectreinterpret_cast而不是static_cast ? 我曾经认为reinterpret_cast是好的例如铸造指针和整数types的指针(如DWORD_PTR ),但从一个void*转换为BYTE* ,是不是static_cast好吗? 在这种特殊情况下是否存在任何(微妙的)差异,还是仅仅是有效的指针转换? C ++标准是否对这种情况有偏好,build议一种方式而不是另一种?

为(自动我:C) – 是否有一个简短的方法做反向?

我有一个自定义的容器类和定义的迭代器,所以我可以这样做: for (auto i : c) 但有什么东西可以反向迭代吗? 就像是: for_reverse (auto i : c)

为什么一个函数不是一个对象?

我读了标准n4296(Draft)§1.8第7页: 一个对象是一个存储区域。 [注意:函数不是一个对象,不pipe它是否以对象的方式占用存储空间。 – 注意] 我花了一些时间在网上寻找这样的排斥的一个很好的理由,没有运气。 也许是因为我不完全了解对象。 所以: 为什么一个函数不是一个对象? 它有什么不同? 这是否与仿函数(函数对象)有任何关系?

.Net中LINQ和Lambdaexpression式的效率和性能是什么?

我已经使用.Net 3.5和VS 2008超过一个月。 和大多数.Net开发者一样,我已经从.Net 1.0&2.0和VS 2005的多年经验发展而来。最近,我发现了LINQ和Lambdaexpression式的简单性和强大性,就像我最近的问题,比如在列表中find一个项目LINQ , 使用Lambda或LINQ 将 类实例转换或映射到另一个类的实例列表 ,以及使用Lambda或LINQ 将类的列表转换或映射到另一个类的列表 。 我承认Lambda和LINQ更简单易读,而且看起来非常强大。 在幕后,.NET编译器必须生成大量代码才能实现这些function。 因此,我有点犹豫,转向新的语法,因为我已经知道“老”的方式来实现相同的结果。 我的问题是关于Lambda和LINQ的效率和性能。 也许Lambdaexpression式大多是内联函数,在这种情况下,我猜Lambda应该没问题。 那么LINQ呢? 让我们将讨论限制在LINQ到对象的LINQ到SQL(LINQ到SQL)。 任何意见,比较和经验?

gdb – 用pipe道debugging

假设我有两个程序叫做blah和ret 。 我想通过I / Oredirect来debugging接收来自ret程序的input的程序。 如何在使用gdb的情况下debuggingblah程序? bash> ret | blah

将JSON数组反序列化为强types的.NET对象

当我可以调用第三方api并获得单个类的数据时,所有的反序列化都可以使用这个代码 TheUser me = jsonSerializer.Deserialize(response, typeof(TheUser)) as TheUser 当我尝试并反序列化一个数组的JSON响应内容时,问题就来了 { "data": [ { "name": "A Jones", "id": "500015763" }, { "name": "B Smith", "id": "504986213" }, { "name": "C Brown", "id": "509034361" } ] } 我只能得到序列化工作,如果我使用“数据”成员周围的自定义包装类,该成员需要是types的List<object> 。 如果它有他们作为typesList<TheUser>我从JsonParser DesializeType方法得到ArgumentException 。 我原本试图没有像这样的包装types连载 List<TheUser> freinds = jsonSerializer.Deserialize(response, typeof(List<TheUser>)) as List<TheUser>; 但是这只是给我一个空的集合。 当然,我必须能够将数组反序列化为强types列表。

*((*(&array + 1)) – 1)可以安全地使用自动数组的最后一个元素吗?

假设我想获得大小未知的自动数组的最后一个元素。 我知道我可以使用sizeof运算符来获得数组的大小,并相应地得到最后一个元素。 正在使用*((*(&array + 1)) – 1)安全吗? 喜欢: char array[SOME_SIZE] = { … }; printf("Last element = %c", *((*(&array + 1)) – 1)); int array[SOME_SIZE] = { … }; printf("Last element = %d", *((*(&array + 1)) – 1)); 等等

自动返回types推演是否强制多个函数具有相同的返回types?

考虑下面的代码片段: struct A { auto foo(), bar(); }; auto A::foo() { return 1; } auto A::bar() { return 'a'; } int main() { } 它在Clang ++ 3.7.0中编译得很好。 它在G ++ 5.2.0中失败 : main.cpp: In member function 'auto A::bar()': main.cpp:7:24: error: inconsistent deduction for 'auto': 'int' and then 'char' auto A::bar() { return 'a'; } 自动返回types推演是否强制在单个语句中声明的多个函数具有相同的返回types?