Tag: C#的

为什么使用.AsEnumerable()而不是转换为IEnumerable <T>?

IEnumerable<T>的扩展方法之一是.AsEnumerable() 。 这个方法将它被调用的枚举对象转换成一个IEnumerable<T>的实例。 但是,由于对象必须实现IEnumerable<T>才能应用于此扩展方法,因此转换为IEnumerable<T>是一个简单的转换为IEnumerable<T>的事情。 我的问题是为什么这个方法存在? 例: List<string> strings = new List<string>() { "test", "test2", "test3" }; IEnumerable<string> stringsEnum1 = strings.AsEnumerable(); IEnumerable<string> stringsEnum2 = (IEnumerable<string>)strings; 在上面的例子中, stringsEnum1和stringsEnum2是等价的。 扩展方法的要点是什么? 编辑 :作为一个推论,为什么有一个.AsQueryable()方法时投掷到IQueryable<T>是等价的?

.NET 4.0中的内存使用量非常高

我有一个C#Windows服务,我最近从.NET 3.5转移到.NET 4.0。 没有其他代码更改。 在3.5上运行时,给定工作负载的内存利用率大约为1.5 GB内存,吞吐量为每秒20 X。 (X在这个问题的背景下并不重要。) 运行在4.0上的完全相同的服务使用3GB至5GB +的内存,并且每秒不到4X。 事实上,随着内存使用量的不断攀升,服务通常会停滞不前,直到我的系统使用率达到99%,并且页面文件交换变得很糟糕。 我不确定这是否与垃圾回收有关,或者是什么,但我很难搞清楚。 我的窗口服务使用“服务器”GC通过configuration文件开关如下所示: <runtime> <gcServer enabled="true"/> </runtime> 将此选项更改为false似乎没有什么区别。 另外,从4.0版新增的GC中读取的数据,大的变化只影响工作站的GC模式,而不是服务器的GC模式。 所以也许GC与这个问题无关。 想法?

在单独assembly中启用具有上下文的迁移?

我有一个项目,我想运行我的update-database ,但我有我的模型和上下文在一个单独的项目。 如果我运行enable-migrations我得到这个错误:在程序集“MyProject”中找不到上下文types。 这大概是因为我的上下文是在MyProject.MVC。 如果我对MyProject.MVC运行enable-migrations ,则必须添加一个应用程序configuration文件。 我不想这样做,因为我想在许多项目中使用代码。 所以我可以运行对MyProject的enable-migrations ,并以某种方式告诉它在MyProject.MVC的上下文?

检查当前用户是否是pipe理员

我的应用程序需要运行一些脚本,我必须确保运行它们的用户是一个pipe理员…使用C#这样做的最好方法是什么?

从C / C ++代码中移除注释

有没有一个简单的方法来删除C / C ++源文件的评论,而不做任何预处理。 (也就是说,我认为你可以使用gcc -E,但这会扩展macros。)我只是想剥离注释的源代码,没有其他的东西应该改变。 编辑: 偏好现有的工具。 我不想用正则expression式自己写这个,我预见代码中有太多惊喜。

SynchronizationContext做什么?

在Programming C#这本书中,它有一些关于SynchronizationContext示例代码: SynchronizationContext originalContext = SynchronizationContext.Current; ThreadPool.QueueUserWorkItem(delegate { string text = File.ReadAllText(@"c:\temp\log.txt"); originalContext.Post(delegate { myTextBox.Text = text; }, null); }); 我是一个初学者,所以请详细回答。 首先,我不知道上下文是什么意思,程序保存在originalContext中的originalContext什么? 当Post方法被触发时,UI线程会做什么? 如果我问一些愚蠢的事情,请纠正我,谢谢! 编辑:例如,如果我只写myTextBox.Text = text; 在方法中,有什么区别?

我如何使用CMake?

我正在尝试使用CMake来编译opencv。 我正在阅读教程,但不明白什么是CMakeLists文件,它如何连接到CMake的GUI? 也不明白什么是makefile,他们是一样的CMakeLists? 我到底用visual-studio打开了哪个文件?

为什么主线程的输出在C#中首先出现?

我写了这个小程序: class Program { static void Main(string[] args) { Thread t = new Thread(WriteX); t.Start(); for (int i = 0; i < 1000; i++) { Console.Write("O"); } } private static void WriteX() { for (int i = 0; i < 1000; i++) { Console.Write("."); } } } 我跑了五十次,控制台上的第一个字符总是“O”。 对我来说这很奇怪,因为t线程首先启动,然后主线继续。 这有什么解释吗?

.NETunit testing包?

在几年的不全面使用之后再回到更多的.NET,并想知道现在的unit testing包是什么。 我对NUnit(几年前)很熟悉,并且与IronRuby进行了一些简单的交stream,目的是让类似rspec的东西能够继续使用,但是除此之外不太了解。 我意识到我可以谷歌这一点,并称之为一天,但我相信我可能得到一个更好,更知情的答复在这里问一个问题:-) build议?

entity framework迁移重命名表和列

我重命名了一对夫妇实体及其导航属性,并在EF 5中生成了新的迁移。与EF迁移中的重命名一样,默认情况下,它将删除对象并重新创build它们。 这不是我想要的,所以我几乎不得不从头构build迁移文件。 public override void Up() { DropForeignKey("dbo.ReportSectionGroups", "Report_Id", "dbo.Reports"); DropForeignKey("dbo.ReportSections", "Group_Id", "dbo.ReportSectionGroups"); DropForeignKey("dbo.Editables", "Section_Id", "dbo.ReportSections"); DropIndex("dbo.ReportSectionGroups", new[] { "Report_Id" }); DropIndex("dbo.ReportSections", new[] { "Group_Id" }); DropIndex("dbo.Editables", new[] { "Section_Id" }); RenameTable("dbo.ReportSections", "dbo.ReportPages"); RenameTable("dbo.ReportSectionGroups", "dbo.ReportSections"); RenameColumn("dbo.ReportPages", "Group_Id", "Section_Id"); AddForeignKey("dbo.ReportSections", "Report_Id", "dbo.Reports", "Id"); AddForeignKey("dbo.ReportPages", "Section_Id", "dbo.ReportSections", "Id"); AddForeignKey("dbo.Editables", "Page_Id", "dbo.ReportPages", "Id"); CreateIndex("dbo.ReportSections", "Report_Id"); CreateIndex("dbo.ReportPages", "Section_Id"); […]