Tag: C#的

如何计算CRC32校验和?

也许我只是没有看到它,但CRC32似乎不必要的复杂,或没有足够的解释,我可以在网上find任何地方。 我理解它的要点就在于它是由消息值的非进位的算术除法的余数除以多项式,但是它的实际执行却逃脱了我。 我已经阅读了CRC错误检测algorithm的无痛指南 ,我必须说这不是无痛的。 它理论上相当好,但作者从来没有得到一个简单的“这就是它”。 他确实说了标准的CRC32algorithm的参数是什么,但是他忽略了清楚地说明如何实现它。 得到我的部分是当他说“这就是它”,然后加上“哦,顺便说一下,它可以颠倒或从不同的初始条件开始”,并没有给出明确的答案,最终的方式是什么计算一个CRC32校验和给出了他刚添加的所有更改。 无论如何,除此之外,它是如何计算的简单解释? 我试图用C语言编写表格,它包含在下面: for (i = 0; i < 256; i++) { temp = i; for (j = 0; j < 8; j++) { if (temp & 1) { temp >>= 1; temp ^= 0xEDB88320; } else { temp >>= 1; } } testcrc[i] = temp; } 但是这似乎产生了与我在互联网上其他地方find的值不一致的值。 我可以用我发现的价值观,但我想了解他们是如何抵达他们的。 […]

如何在Visual Studio 2015中使用c#7?

我听说Visual Studio 15的最新预览版可以configuration为使用C#7的某些function,但Visual Studio 2015呢? 我如何使用C#7?

为什么%d代表整数?

我知道这听起来不是很有效,但我正在寻找一种方法来记住printf调用的所有格式化代码。 %s , %p , %f都很明显,但我不明白%d是从哪里来的。 %i已经被其他东西占用了吗?

在循环内部或外部使用不安全有什么区别?

过去我从来不需要使用不安全的,但是现在我需要它来处理一个位图的指针。 我找不到任何其他文档,但我想更好地了解不安全的作品,以及如果它在循环内部或外部使用它有什么区别。 这样做更好吗? unsafe { for (int x = 0; x < maxX; x++) { for (int y = 0; y < maxY; y++) { //Unsafe pointer operations here. } } } 还是要做? for (int x = 0; x < maxX; x++) { for (int y = 0; y < maxY; y++) { unsafe { […]

混淆模板错误

我一直在玩clang,我偶然发现了“test / SemaTemplate / dependent-template-recover.cpp”(在clang发行版中),它应该提供一些提示来从模板错误中恢复。 整个事情可以很容易地被剥离到一个最小的例子: template<typename T, typename U, int N> struct X { void f(T* t) { // expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}} t->f0<U>(); } }; 叮当产生的错误信息: tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template name t->f0<U>(); ^ template 1 error generated. …但是我很难理解到底在哪里插入template关键字来使代码在语法上是正确的?

DbQuery.Include()的重载去哪里需要一个lambda?

我刚刚为一个使用EntityFramework的新项目声明了一些代码优先模型。 public class BlogEntry { public long Id { get; set; } public long AuthorId { get; set; } public DateTime PublishedStamp { get; set; } public string Title { get; set; } public string Text { get; set; } public virtual User Author { get; set; } } public class User { public long […]

为什么HashSets的可空值的结构非常慢?

我调查了性能下降,并追踪到减缓HashSets。 我有可用作主键的可空值的结构。 例如: public struct NullableLongWrapper { private readonly long? _value; public NullableLongWrapper(long? value) { _value = value; } } 我注意到创build一个HashSet<NullableLongWrapper>非常慢。 下面是一个使用BenchmarkDotNet的例子:( Install-Package BenchmarkDotNet ) using System.Collections.Generic; using System.Linq; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Running; public class Program { static void Main() { BenchmarkRunner.Run<HashSets>(); } } public class Config : ManualConfig { public […]

编译器如何在不知道大小的情况下分配内存?

我写了一个C程序,它接受来自用户的整数input,用作整型数组的大小,并使用该值声明给定大小的数组,并通过检查数组大小来确认它。 码: #include <stdio.h> int main(int argc, char const *argv[]) { int n; scanf("%d",&n); int k[n]; printf("%ld",sizeof(k)); return 0; } 令人惊讶的是这是正确的! 该程序能够创build所需大小的数组。 但是所有的静态内存分配都是在编译时完成的,在编译期间n的值是未知的,那么编译器如何才能分配所需大小的内存呢? 如果我们可以像这样分配所需的内存,那么使用malloc()和calloc()进行dynamic分配有什么用处呢?

auto_ptr是否被弃用?

auto_ptr会在传入的C ++标准中被弃用吗? unique_ptr应该用于所有权转移,而不是shared_ptr? 如果unique_ptr不在标准中,那么我是否需要使用shared_ptr?

C#有没有给我一个不可变的字典的方法?

有什么内置的核心C#库,可以给我一个不可变的词典? Java的一些东西: Collections.unmodifiableMap(myMap); 只是为了澄清,我不想阻止键/值本身被改变,只是字典的结构。 我想要的东西,如果任何IDictionary的mutator方法被调用( Add, Remove, Clear ) Add, Remove, Clear快速失败的声音。