Tag: C#的

错误/ langversion错误选项'6'; 必须是ISO-1,ISO-2,3,4,5或默认

我试图将.NET 4.6作为目标,并通过将C#语言版本更改为6来利用最新的C#版本。 但在编译期间,我得到了这个错误: 错误/ langversion错误选项'6'; 必须是ISO-1,ISO-2,3,4,5或默认 如果我将Web.Config中的/langversion:6更新为5, <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"> 但是,如何解决这个问题,而不诉诸较低的语言版本? 我正在使用Visual Studio 2015社区版,并且我还手动安装了.NET Framework 4.6,以防Visual Studio 2015默认安装它。 该项目是由Visual Studio 2015创build的标准ASP.NET MVC模板项目。

Find()与FirstOrDefault()的性能

可能重复: Find()与Where()。FirstOrDefault() 有一个有趣的结果search戴安娜在一个简单的引用types具有单个string属性的大序列。 Stopwatch watch = new Stopwatch(); string diana = "Diana"; while (Console.ReadKey().Key != ConsoleKey.Escape) { //Armour with 1000k++ customers. Wow, should be a product with a great success! 🙂 var customers = (from i in Enumerable.Range(0, 1000000) select new Customer { Name = Guid.NewGuid().ToString() }).ToList(); customers.Insert(999000, new Customer { Name = diana }); […]

为什么使用asynchronous请求而不是使用更大的线程池?

在荷兰的Techdays期间,Steve Sanderson就C#5,ASP.NET MVC 4和asynchronousWeb进行了演示。 他解释说,当请求花费很长时间才能完成时,线程池中的所有线程变得繁忙,新的请求必须等待。 服务器无法处理负载,一切都变慢。 然后,他展示了如何使用asynchronousWeb请求提高性能,因为工作被委托给另一个线程,并且线程池可以快速响应新的传入请求。 他甚至演示了这一点,并表明50个并发请求首先花费50 * 1s,但asynchronous行为总共只有1,2秒。 但看到这个我还有一些问题。 为什么我们不能只使用一个更大的线程池? 不使用asynchronous/等待来调出另一个线程较慢,然后从一开始就增加线程池? 这不像我们运行的服务器突然得到更多的线程或东西? 来自用户的请求仍然在等待asynchronous线程完成。 如果池中的线程正在做其他事情,“UI”线程如何保持忙碌? 史蒂夫提到了“一个聪明的内核,知道什么时候完成”。 这个怎么用?

ILMerge最佳实践

你用ILMerge吗? 你使用ILMerge来合并多个程序集以缓解dll的部署吗? 在将ILMerging程序集合在一起之后,您是否发现部署/版本控制方面的问题? 我正在寻找一些关于使用ILMerge减less部署摩擦的build议,如果这是可能的话。

投射到.NET参考源中的对象

我正在浏览.NET参考源中的OperatingSystem.cs文件,并在第50行中注明了这个代码: if ((Object) version == null) version是类Version的对象,这意味着version派生自Object 。 如果是这样,是不是多余的铸造Object ? 难道这不是一样的吗? if (version == null)

为什么没有std :: copy_ifalgorithm?

在C ++中没有std :: copy_ifalgorithm有什么特别的原因吗? 我知道我可以使用std :: remove_copy_if来实现所需的行为。 我认为它是来自C ++ 0x,但是一个简单的copy_if,它需要一个范围,一个输出迭代器和一个函数。 它只是简单地错过了或者有其他原因背后呢?

在C ++中使用未命名的名称空间

什么时候在C ++中使用未命名的名称空间? 在任何意义上而不是自由职业是否更好? 另外,它应该只用于源文件,而不是在头文件?

System.Array.CopyTo()和System.Array.Clone()之间的区别

System.Array.CopyTo()和System.Array.Clone()之间有什么区别?

为什么Linux上的string文字的内存地址与其他string的内存地址不同?

我注意到string文字在内存中的地址与其他常量和variables(Linux OS)非常不同:它们有许多前导零(未打印)。 例: const char *h = "Hi"; int i = 1; printf ("%p\n", (void *) h); printf ("%p\n", (void *) &i); 输出: 0x400634 0x7fffc1ef1a4c 我知道他们存储在可执行文件的.rodata部分。 有没有一种特殊的方式操作系统后来处理它,所以文字最终在一个特殊的内存区域(前导零)? 这个内存位置有没有什么优点,或者有什么特别的地方呢?

多less空值检查就足够了?

什么是什么是什么时候没有必要检查一个空值的准则? 最近我一直在努力的很多inheritance代码都有一些空的检查。 对平凡的函数进行空值检查,对调用非空返回值的API调用进行空检查等。在某些情况下,空检查是合理的,但是在很多地方,空值不是合理的期望值。 我听说过一些论据,从“你不能相信其他代码”到“总是防守”到“直到语言保证我是一个非空值,我总是要去检查”。 我当然同意这些原则中的许多原则,但是我发现过多的空值检查会导致通常违反这些原则的其他问题。 顽强的空检查真的值得吗? 通常情况下,我已经观察到过多的空值检查代码实际上质量较差,而不是质量较高。 大部分代码似乎都非常关注空值检查,因此开发人员忽略了其他重要的特性,例如可读性,正确性或exception处理。 特别是,我看到很多代码忽略了std :: bad_allocexception,但对new进行了空检查。 在C ++中,由于解引用空指针的不可预知的行为,我在某种程度上理解了这一点; 在Java,C#,Python等中,空解除引用是比较优雅的处理。我刚才看到了一些缺乏警惕的空值检查的例子吗?或者真的有这个东西吗? 这个问题的目的是语言不可知的,虽然我主要感兴趣的是C ++,Java和C#。 我已经看到的一些空检查的例子似乎过多,包括: 这个例子似乎是占了非标准的编译器,因为C ++规范说,失败的新引发exception。 除非您明确支持不符合规范的编译器,否则这是否有意义? 在Java或C#(甚至是C ++ / CLR)这样的托pipe语言中,这是否有意义? try { MyObject* obj = new MyObject(); if(obj!=NULL) { //do something } else { //??? most code I see has log-it and move on //or it repeats what's in the exception […]