C#中集合数据类型的比较

有谁知道对不同C#集合类型的一个很好的概述? 我正在寻找一些东西,显示支持Add , Remove , RemoveLast等基本操作,并给出相对性能。 对于各种generics类来说会特别有趣 – 如果它显示出来,那就更好了。 如果List之间的性能存在差异,其中T是一个类,而T是一个结构。 一个开始将是抽象数据结构的一个很好的备忘单,比较链接列表,哈希表等等。谢谢!

为什么我必须使用等待方法来异步运行。 如果我不想在继续之前等待方法完成怎么办?

我整天都在倾听MSDN文档,他们的异步编码理念让我感到困惑。 据我了解,如果调用异步方法,则不会阻止调用异步方法的线程。 然而,async总是与await配对,这似乎否定了async-ness,使得外部方法必须等待代码执行无论如何。 我不应该能够调用异步方法然后继续执行外部方法吗? 这是我遇到过的场景,或多或少: void reportSomethingHappened(info) – Collect info – HTTP POST info to logging server (ie. mixpanel, sentry) 这里将是一个调用方法: void largerProcess if (whatever) reportSomethingHappened(); bla; bla; 据我所知,由于POST请求可以异步完成,我应该能够将reportSomethingHappened()转换为异步方法(通过AFAIK,等待webrequest,并添加async关键字)。 但是largeProcess方法不需要等待(即等待)报告方法完成以执行bla bla。 然而,VS告诉我,使用异步方法,我可以等待它,或者它会同步发生,然后阻塞。 这不是单独打败它的目的吗? 我怎么写这个,以便reportSomethingHappened不会阻止greaterProcess的执行? (这本身就让我感到困惑,因为我认为这一直是异步的重点)

C#private,static和readonly

我正在审查log4net的一些代码,我遇到了这个问题。 private static readonly ILog logger = LogManager.GetLogger(typeof(AdminClient)); 我想知道为什么你需要私有静态readonly。 从我的理解私有意味着变量不能在类外使用,除非有一个访问器方法或获取属性。 static意味着变量仅在此文件中作用域。 readonly意味着你只能从值读取而不能分配它。 所以,我在想那个写这段代码的人。 声明它是私有的,因为他们不希望它在类外使用和静态,因此不希望它在文件外使用。 但是,如果有一个get属性会静态阻止这种forms发生。 我想我可以理解readonly,只能读取和设置值。 非常感谢任何建议,

如何在c#中写日志文件?

我如何在c#中编写日志文件? 目前我有一个带有此语句的计时器,每20秒计时一次: File.WriteAllText(filePath+”log.txt”, log); 对于我想要记录的所有内容,我这样做: log += “stringToBeLogged”; 您可以假设字符串日志随着程序的运行而增长和增长。 (我甚至不知道每个字符串是否有最大字符数?) 我认为必须有更好的方法来做到这一点。 我只是觉得每次将某些内容添加到日志中时,反复写入整个文件会很重。

使用c#将文件(从流)保存到磁盘

可能重复: 如何将流保存到文件? 我有一个流对象,可能是一个图像或文件(msword,pdf),我决定以非常不同的方式处理这两种类型,因为我可能想要优化/压缩/resize/生成缩略图等。我调用一个特定的方法来将图像保存到磁盘,代码: var file = StreamObject; //if content-type == jpeg, png, bmp do… Image _image = Image.FromStream(file); _image.Save(path); //if pdf, word do… 我如何实际保存单词和PDF? //multimedia/ video? 我看了(可能不够硬)但我找不到任何地方……

存储库/ IQueryable /查询对象

我正在构建一个存储库,我在很多地方看到了2个不在存储库外暴露IQueryable的原因。 1)首先是因为不同的LINQ提供者可能表现不同,这种差异应该包含在存储库中。 2)第二是防止服务级别开发人员修改数据库查询,以免意外导致性能问题。 我想问题2只能通过将所有查询逻辑保留在存储库中并且不允许任何forms的外部查询构建来防止? 但这对我来说似乎有点不切实际。 问题1似乎可以通过使用数据对象模式来解决。 例如public IEnumerable FindBy(Query query) 我的问题是,为什么我不仅仅传递一个lambda表达式,因为它与提供者无关,似乎为我提供了与查询对象相同的function,以及相同的分离级别? 例如public IEnumerable FindBy(Expression<Func> predicate) 有什么理由不这样做吗? 它违反了一些规则吗? 最佳做法? 我应该知道的吗?

ASP.Net,C#.Net和VB.Net之间的区别?

我只需要澄清一些事情。 我目前正在寻找工作 – 我周一将我的简历放在Monster上,并且已经有大约8家代理商打电话询问他们可以获得的工作。 其中一人说他注意到VB.Net在我的简历上,但问我是否知道ASP.Net。 我回答说ASP.Net包含VB.Net和C#.Net – 据我所知这些是ASP.Net的两个主要部分。 这是正确的吗? 在过去的几年里,他是在胡说八道还是误解了.net的整个概念? 我认为(或希望)我是对的,他错了 – 我的意思是他只是一个为IT行业的招聘机构工作的代理人,所以他不一定是该领域的专家,只是想找到一份工作。 如果两者都错了,那么请随意我。 问候, 理查德

如何在本地IIS服务器上获取网站的物理路径? (来自桌面应用)

如何获得通常看起来像%SystemDrive%\inetpub\wwwroot的路径? 我想这与Microsoft.Web.Administration.ServerManager类有关,但我找不到办法。 更新:我正试图从独立应用程序获取路径。 不是ASP.NET Web应用程序。

.NET Web服务和BackgroundWorker线程

我正试图在webservice方法中做一些异步的东西。 假设我有以下API调用: http : //www.example.com/api.asmx 并且该方法称为GetProducts() 。 我这个GetProducts方法,我做了一些事情(例如从数据库中获取数据)然后在我返回结果之前,我想做一些异步的东西(例如给我发电子邮件)。 所以这就是我所做的。 [WebMethod(Description = “Bal blah blah.”)] public IList GetProducts() { // Blah blah blah .. // Get data from DB .. hi DB! // var myData = ……. // Moar clbuttic blahs 🙂 (yes, google for clbuttic if you don’t know what that is) // Ok .. […]

如何在C#中获得给定月份的所有日期

我想创建一个需要月份和年份的函数,并返回List填充本月的所有日期。 任何帮助将不胜感激 提前致谢