Tag: C#的

ReSharper约定事件处理程序的名称

当我为任何事件添加新的事件处理程序时,VS创build类似object_Click方法。 但是ReSharper强调这个方法是Warning,因为所有的方法都不应该有任何的“_”。 我如何自定义ReSharper的规则,以便它不强调这种方法? 或者可能我应该重新命名这样的方法? 提前致谢。

为什么LINQ .Where(谓词).First()比.First(谓词)快?

我正在做一些性能testing,并注意到一个LINQexpression式 result = list.First(f => f.Id == i).Property 比…慢 result = list.Where(f => f.Id == i).First().Property 这似乎是违反直觉的。 我会认为第一个expression式会更快,因为一旦谓词满足,它可以停止迭代列表,而我会认为.Where()expression式可能会在调用.First()之前迭代整个列表.First()在所得到的子集上。 即使后者发生短路,也不应该比直接使用First更快,但它是。 下面是说明这一点的两个非常简单的unit testing。 在TestWhereAndFirst上进行优化编译时,比在.Net和Silverlight 4上的TestFirstOnly快30%左右。我尝试使谓词返回更多的结果,但性能差异是相同的。 任何人都可以解释为什么.First(fn)慢于.Where(fn).First() ? 我看到类似的计数器直观的结果.Count(fn)与.Count(fn)相比。 private const int Range = 50000; private class Simple { public int Id { get; set; } public int Value { get; set; } } [TestMethod()] public void TestFirstOnly() […]

C ++:long long int长整型与int64_t

我在使用C ++types特征的时候遇到了一些奇怪的行为,并且把我的问题缩小到了这个古怪的小问题上,我会给出很多的解释,因为我不想留下任何可能导致误解的东西。 假设你有这样一个程序: #include <iostream> #include <cstdint> template <typename T> bool is_int64() { return false; } template <> bool is_int64<int64_t>() { return true; } int main() { std::cout << "int:\t" << is_int64<int>() << std::endl; std::cout << "int64_t:\t" << is_int64<int64_t>() << std::endl; std::cout << "long int:\t" << is_int64<long int>() << std::endl; std::cout << "long long int:\t" […]

JSON格式化在C#?

寻找一个函数,将string Json作为input,并用换行符和缩进来格式化它。 validation将是一个奖金,但没有必要,我不需要parsing成一个对象或任何东西。 任何人都知道这样的图书馆? 示例input: {"status":"OK", "results":[ {"types":[ "locality", "political"], "formatted_address":"New York, NY, USA", "address_components":[ {"long_name":"New York", "short_name":"New York", "types":[ "locality", "political"]}, {"long_name":"New York", "short_name":"New York", "types":[ "administrative_area_level_2", "political"]}, {"long_name":"New York", "short_name":"NY", "types":[ "administrative_area_level_1", "political"]}, {"long_name":"United States", "short_name":"US", "types":[ "country", "political"]}], "geometry":{"location":{"lat":40.7143528, "lng":-74.0059731}, "location_type":"APPROXIMATE", "viewport":{"southwest":{"lat":40.5788964, "lng":-74.2620919}, "northeast":{"lat":40.8495342, "lng":-73.7498543}}, "bounds":{"southwest":{"lat":40.4773990, "lng":-74.2590900}, "northeast":{"lat":40.9175770, "lng":-73.7002720}}}}]}

C ++ 11 lambda实现和内存模型

我想了解一些关于如何正确思考C ++ 11闭包和std::function的信息,以及它们如何实现以及如何处理内存。 尽pipe我不相信过早的优化,但是在编写新代码的时候,我确实有习惯认真考虑我的select对性能的影响。 我也做了相当数量的实时编程,例如在微控制器和audio系统上,要避免非确定性内存分配/释放暂停。 因此,我想更好地了解何时使用或不使用C ++ lambdaexpression式。 我目前的理解是,没有捕获闭包的lambda完全像Ccallback。 但是,当通过值或引用捕获环境时,会在堆栈上创build一个匿名对象。 当一个函数必须返回一个值闭包时,它会把它包装在std::function 。 在这种情况下closures内存会发生什么? 它是从堆栈复制到堆? 每当std::function被释放时它是否被释放,也就是说,它是否像std::shared_ptr一样被引用计数? 我想在一个实时系统中,我可以设置一个lambda函数链,将B作为延续parameter passing给A,以便创build一个处理pipe道A->B 在这种情况下,A和Bclosures将被分配一次。 虽然我不确定这些是否会被分配在堆栈或堆上。 但是总的来说,这在实时系统中似乎是安全的。 另一方面,如果B构造了一些返回的lambda函数C,那么C的内存将被重复地分配和释放,这对于实时使用是不可接受的。 在伪代码中,我认为将是一个实时安全的DSP环路。 我想执行处理块A然后B,其中A调用它的参数。 这两个函数都返回std::function对象,所以f将是一个std::function对象,其环境存储在堆中: auto f = A(B); // A returns a function which calls B // Memory for the function returned by A is on the heap? // Note that A and B may […]

如何清除MemoryCache?

我已经使用MemoryCache类创build了一个caching。 我添加一些项目,但是当我需要重新加载caching我想先清除它。 什么是最快的方法来做到这一点? 我应该循环所有的项目,并一次删除一个或有更好的办法吗?

fread / fwrite以尺寸和数量作为参数的基本原理是什么?

我们在这里讨论了为什么fread和fwrite为每个成员设置一个大小,并计算并返回读写成员的数量,而不是仅仅考虑缓冲区和大小。 我们可以想到的唯一用途是如果你想读/写一个不能被平台alignment平均整除的结构体数组,并且因此已经被填充,但是不能这样常见以至于不能保证这个select在devise中。 从FREAD(3) : 函数fread()从stream指向的stream中读取数据的nmemb个元素,每个size个字节长,将它们存储在ptr给定的位置。 函数fwrite()将数据的nmemb元素(每个字节长度)写入stream指向的stream,从ptr给出的位置获取它们。 fread()和fwrite()返回成功读取或写入的项目数(即不是字符数)。 如果发生错误或到达文件结尾,则返回值是短项目计数(或零)。

noreturn的意义是什么?

[dcl.attr.noreturn]提供了以下示例: [[ noreturn ]] void f() { throw "error"; // OK } 但是我不明白[[noreturn]]是什么意思,因为函数的返回types已经是void 。 那么, noreturn属性的重点是什么? 它应该如何使用?

实现CollectionChanged

我已经将CollectionChanged eventhandler(onCollectionChanged)添加到其中一个ObservableCollection属性。 我发现onCollectionChanged方法仅在添加项目或将项目移除到集合的情况下才会被调用,但是在收集项目被编辑的情况下不会被调用。 我想知道如何发送一个集合中新增,删除和编辑项目的列表/集合。 谢谢。

如何从XDocument获取XML节点

如何从XDocument使用LINQ获取XML元素? 假设我有一个XDocument命名的XMLDoc,如下所示: <Contacts> <Node> <ID>123</ID> <Name>ABC</Name> </Node> <Node> <ID>124</ID> <Name>DEF</Name> </Node> </Contacts> XElement Contacts = from xml2 in XMLDoc.Elements("Contacts").Elements("Node") where xml2.Element("ID").Value == variable select xml2; 但我得到错误“对象引用不设置…..” 如何使用LINQ从XML文件中获取特定节点? 我想更新该节点中的一些值? 怎么可能? 提前致谢………