草庐IT

c# - 如何在 .NET ConcurrentDictionary 中实现 remove_if 功能

我有一个场景,我必须为ConcurrentDictionary中的给定键保留引用计数对象,如果引用计数达到0,我想删除该键。这必须是线程安全的,因此我计划使用ConcurrentDictionary。示例程序如下。在并发字典中,我有key和value,值是KeyValuePair,它保存我的自定义对象和引用计数。ConcurrentDictionary>ccd=newConcurrentDictionary>();//followingcodeaddsthekey,ifnotexistswithreference//countformycustomobjectto1//ifthekey

c# - 表达式列表 <Func<T, TProperty>>

我正在寻找一种方法来存储Expression>的集合用于对元素进行排序,然后针对IQueryable执行存储的列表对象(底层提供者是EntityFramework)。例如,我想做这样的事情(这是伪代码):publicclassProgram{publicstaticvoidMain(string[]args){OrderClauseorderBys=newOrderClause();orderBys.AddOrderBy(u=>u.Firstname);orderBys.AddOrderBy(u=>u.Lastname);orderBys.AddOrderBy(u=>u.Age);Re

具有参数类型的 C# Func 委托(delegate)

如何在C#中获得Func表示具有此签名的方法的参数?XmlNodecreateSection(XmlDocumentdoc,paramsXmlNode[]childNodes)我尝试使用Func类型的参数但是,哦,ReSharper/VisualStudio2008疯狂地用红色突出显示它。更新:好的,谷歌搜索“c#paramsfunc”没有结果,但是“c#paramsdelegate”让我找到了thisquestion.按照JonSkeet的回答,看起来我可以创建一个delegate,说Foo,然后我的方法没有参数Func,我采用Foo类型的参数. 最佳答案

c# - Visual Studio 2008 中的 If 语句异常

我遇到了一个非常奇怪的问题,我记录了我的session,因为我认为没有人会相信我。我遇到了一个似乎非常基础的错误。这是一个单线程应用程序,我所做的只是计算一个bool值。bool值等于false,但是,if语句正在执行,就好像它是true...有点。你会明白我的意思。我已经清理了解决方案并重建了很多次。不知道发生了什么。请给我一些解释。http://www.youtube.com/watch?v=ope9kxEyt4g 最佳答案 我以前见过很多次。基本上发生的事情是您正在调试的代码与您看到的代码不匹配。我不知道是什么原因造成的,解决

c# - Windows 窗体 : add new line to label if text is too long

我正在使用C#。有时,从Web服务返回的文本(我在标签中显示)太长,会在表单边缘被截断。如果表单不适合标签,是否有简单的方法向标签添加换行符?谢谢 最佳答案 如果您将标签设置为autosize,它会随着您放入其中的任何文本自动增长。为了使其以特定宽度自动换行,您可以设置MaximumSize属性。myLabel.MaximumSize=newSize(100,0);myLabel.AutoSize=true;经过测试并有效。如果您希望始终能够看到数据,可以将Label容器的AutoScroll属性设置为true。

c# - LINQ to SQL insert-if-non-existent

我想知道是否有更简单的方法来插入表中尚不存在的记录。我仍在努力培养我的LINQtoSQL技能。这是我得到的,但似乎应该有更简单的方法。publicstaticTEntityInsertIfNotExists(DataContextdb,Tabletable,Funcwhere,TEntityrecord)whereTEntity:class{TEntityexisting=table.SingleOrDefault(where);if(existing!=null){returnexisting;}else{table.InsertOnSubmit(record);//Can'tuse

c# - 将开发快捷方式放在#if DEBUG block 中是个坏主意吗?

在我们代码的一些地方,我们使用#ifDEBUGblock来简化开发。像这样的东西:#ifDEBUGserverIP=localhost;#elseserverIP=GetSetting()#endif或privateboolisLicensed()#ifDEBUGreturntrue;#endifreturnCheckSetting()还有一些地方我们会像这样进行外观更改:#ifDEBUGbackground=humorousImage.jpg#elsebackground=standardColor#endif依赖#ifdebug来简化开发是否危险?如果是,#ifdebug的有效用法

c# - 为什么 Action/Func 比 .Net 中的常规方法更好?

如果我需要一段可快速重用的代码,我更喜欢使用Action或Func,但是我团队中的其他人不喜欢或不理解它们。目前我唯一真正的争论是关于偏好和更新的代码实践,但这些只是糟糕的争论。为什么这样做更好:ActionhideControl=(form,name)=>{varbutton=form.GetControl(name);if(button!=null)button.Visible=false;}比:publicstaticvoidHideControl(thisFormViewform,stringname)whereT:Control{varbutton=form.GetContr

c# - cocos2d-xna : sprite is not drawn if using instance of a class inherited from sprite

我有一个基于Cocos2DXNA和MonoGame的游戏项目。我想在CCSprite类中添加一些自定义逻辑,所以我创建了一个继承自CCSprite的类。我添加了一个虚拟自动属性并尝试使用此类,但出于某种原因,作为我的自定义Sprite类实例创建的Sprite未显示在图层上,而作为CCSprite类实例的Sprite完全没问题。代码如下所示:publicclassSprite:CCSprite{publicstringSomeProp{get;set;}}...line1:varmySprite1=newSprite("texture.png");line2:varmySprite1=n

c# - 使用 Func<>(或 Action<>)或创建自己的委托(delegate)?

哪个更好,比如说,方法中的参数类型(与LINQ无关)。显然Func更好,因为它更简单,更具描述性,如果每个人都在使用它,一切都会变得兼容(好)。但是我注意到Microsoft在某些库中使用了自己的委托(delegate),例如事件处理程序。那么,它们各自的优点和缺点是什么?我应该什么时候使用它?编辑:显然Func仅在3.5中可用,因此这可能是我看到非Func委托(delegate)的主要原因。还有其他不使用Func的原因吗?(例如:this来自.NET4)同样的问题也适用于Action 最佳答案 Func在非常清楚它们的用途并且输入