Tag: C#的

uint32和uint32_t之间的区别

可能重复: 不同的整数types之间的区别 C / C ++中uint32和uint32_t有什么区别? 他们是否依赖操作系统 在这种情况下,我应该使用一个还是另一个? 谢谢

关联性math:(a + b)+ c!= a +(b + c)

最近,我正在浏览Eric Lippert的一篇旧博客文章,他在写关于关联性的文章时提到,在C#中, (a + b) + c对a,b的某些值不等于a + (b + c) , C。 我无法弄清算术值的types和范围可能是真的,为什么。

C#语言名称的由来

我是C和C ++程序员,现在正在学习C#。 我已经买了Wrox出版物专业C#的书。 从C到C ++的迁移中,我怀疑为什么在C中添加了++ 。后来我意识到,由于++是一个增量操作符,为了提供“面向对象的扩展”,它被添加到C中。 在C#中,#的意义是什么?

如何获得整数线程ID在C + + 11

c ++ 11有可能获得当前的线程ID,但它不能转换为整数types: cout<<std::this_thread::get_id()<<endl; 输出:139918771783456 cout<<(uint64_t)std::this_thread::get_id()<<endl; 错误:从types'std :: thread :: id'转换为types'uint64_t'无效从其他types相同:从types'std :: thread :: id'无效转换types'uint32_t' 我真的不想做指针投射得到整数线程ID。 有没有一些合理的方法(标准,因为我希望它是便携式)做到这一点?

为什么无符号整数容易出错?

我正在看这个video 。 Bjarne Stroustrup说无符号整数很容易出错并导致错误。 所以,你只有在真正需要的时候才能使用它们。 我也读过Stack Overflow的一个问题(但我不记得是哪一个),使用unsigned int可能导致安全漏洞。 他们如何导致安全漏洞? 有人可以通过一个合适的例子清楚地解释它吗?

为什么不是所有的代码编译位置独立?

在gcc中编译共享库时,-fPIC选项将代码编译为位置无关的代码。 是否有任何理由(性能或其他)为什么你不会编译所有的代码位置独立?

将C#编译为Native?

我想我对编译.NET字节码到本机代码有些困惑,或者我对最终结果感到困惑。 所以请耐心等待,因为我试图理清我认为理解的事情,所以你可以帮我弄清楚我错过了什么。 我想要做的就是用C#编写我的应用程序,然后编译成普通的本地代码,就像我用C写的那样。我的推理与性能无关,而是有一定程度的保护。 我知道我的最终目标并不是不可能的(甚至是真的很难),但是我只是想倒转x86程序集比倒转Reflector给我更困难。 现在,如果我把我的C#应用​​程序放入reflection器,我基本上得到我的源代码。 通常,当我将非托pipeC / C ++应用程序投入到IDAPro中并使用HexRays反编译器时,我并不完全获得相同的反编译程度,我不得不通过x86反汇编来了解逻辑stream程。 这是我的理解,这样伟大的反编译来自reflection器由于应用程序在MSIL而不是更简洁的本机代码,HexRays尝试反编译。 我不担心仍然需要.NET运行时的客户机,我不想绕过这些。 我想在我的程序上运行正常的软件混淆程序(如upx ,并将其作为.NET二进制文件执行失败。 这是我从这个相关的问题的理解, ngen做我想要的。 我试过使用ngen 。 但是,将输出文件从C:\Windows\assemblies\…\applicationName.ni.exe目录复制到某处后,我可以双击,并尝试运行它会产生一个关于它不是“有效的Win32应用程序”。 此外,当我将applicationName.ni.exe折腾到Reflector中时,我得到的输出与我从applicationName.exe得到的输出相同。 由于applicationName.ni.exe应该是本地代码,我期望Reflector出错,但是没有。 如果这是我应该这样做的方式,为什么Reflector仍然给我这样一个伟大的反编译? 所以,只是总结我的主要问题:我怎样才能编译我的.NET程序到一个本地的二进制reflection器不会这么容易反编译? 或者,用新手逆向工程师来保护使用.NET语言编写的产品的最佳做法是什么? 如果我需要一个不同的工具,我更喜欢免费的东西,而不是Codewall 。 谢谢! 更新:我明白,我正在寻找可能会限制像reflection这样的语言的一些function,但我认为我很好。 我的代码没有任何显式的Assembly.Load调用或任何types的。 但是不能用GetProcAddress/LoadLibrary调用呢?

Enum.Parse(),肯定是一个整洁的方式?

说我有一个枚举, public enum Colours { Red, Blue } 我可以看到parsing它们的唯一方法就是: string colour = "Green"; var col = (Colours)Enum.Parse(typeOf(Colours),colour); 这将抛出System.ArgumentException,因为“绿色”不是“ Colours枚举的成员。 现在我真的讨厌try / catch中的包装代码,有没有更好的方法来做到这一点,不涉及我遍历每个Colours枚举,并做一个string与colour比较?

程序退出时泄漏的内存是否释放?

如果我编程 – 不知道它 – 内存泄漏,应用程序终止,泄漏的内存是否释放?

HttpWebRequest&本机GZip压缩

当请求使用Gzip压缩的页面时,我收到了很多以下错误: System.IO.InvalidDataException:GZip页脚中的CRC与从解压缩数据计算出的CRC不匹配 我正在使用本地GZipStream解压缩,并正在寻找解决这个问题。 有鉴于此,是否有解决这个或另一个GZip库(免费?),这将正确处理这个问题的工作? 我正在validationwebResponse ContentEncoding是GZIP 5/11更新一个简化的snippit //Caller public void SOSampleGet(string url) { // Initialize the WebRequest. webRequest = (HttpWebRequest)WebRequest.Create(url); webRequest.Method = WebRequestMethods.Http.Get; webRequest.KeepAlive = true; webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; webRequest.Headers.Add("Accept-Encoding", "gzip,deflate"); webRequest.Referer = WebUtil.GetDomain(url); HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); using (Stream stream = GetStreamForResponse(webResponse, READTIMEOUT_CONST)) { //use stream } } //Method private static Stream GetStreamForResponse(HttpWebResponse webResponse, […]