草庐IT

C# 扩展方法 - 有多远?

Rails为Ruby引入了一些核心扩展,例如3.days.from_now,它会返回,正如您所期望的三天后的日期。使用C#中的扩展方法,我们现在可以做类似的事情:staticclassExtensions{publicstaticTimeSpanDays(thisinti){returnnewTimeSpan(i,0,0,0,0);}publicstaticDateTimeFromNow(thisTimeSpants){returnDateTime.Now.Add(ts);}}classProgram{staticvoidMain(string[]args){Console.Write

c# - 为什么每个 Char static "Is..."都有一个字符串重载,例如IsWhiteSpace(字符串,Int32)?

http://msdn.microsoft.com/en-us/library/1x308yk8.aspx这允许我这样做:varstr="string";Char.IsWhiteSpace(str,6);而不是:Char.IsWhiteSpace(str[6]);似乎不寻常,所以我看了看倒影:[TargetedPatchingOptOut("PerformancecriticaltoinlineacrossNGenimageboundaries")]publicstaticboolIsWhiteSpace(charc){if(char.IsLatin1(c)){returnchar.I

c# - 在 TPL 中返回一个空的静态任务是一种不好的做法吗?

有些情况下我想有条件地运行任务。我使用这样的某种扩展方法:publicstaticclassMyTaskExtension{privatestaticTasktheEmptyTask=Task.Factory.StartNew(()=>{});//ThisisthequestionpublicstaticTaskContinueWith(thisTasktask,TaskcontinuationTask,Funccondition){ifcondition(){...dothework}returntheEmptyTask;}}我的期望是theEmptyTask已经完成,所以基本上如果

c# - 私有(private)嵌套静态类 - 好的还是坏的做法?

将私有(private)静态类嵌套在非静态类中会被认为是一种不好的做法吗?publicclassOuter{privatestaticclassInner{}}这里的想法是“Outer”的所有实例都将共享对静态的访问。另一种方法可能是让内部类成为非静态类并使用它的静态实例:publicclassOuter{privatestaticinnerInstance=newInner();privateclassInner{}}类似的效果。这种方法的优点/缺点或其他注意事项是什么?我必须承认我几乎从不使用嵌套类,无论是否是静态的,但我对这个特定概念很感兴趣.. 最佳

c# - 如何在 Main() 方法之前在 C# 中运行静态初始化方法?

给定一个带有初始化方法的静态类:publicstaticclassFoo{//Classmembers...internalstaticinit(){//Dosomeinitialization...}}如何确保初始化程序在Main()之前运行?我能想到的最好的办法是将它添加到Foo:privateclassInitializer{privatestaticboolisDone=false;publicInitializer(){if(!isDone){init();isDone=true;}}}privatestaticreadonlyInitializerinitializer=n

c# - 静态构造函数会导致性能开销?

最近在dotnetpearls.com上阅读一篇文章here说静态ctors会受到大量的性能影响。不明白为什么? 最佳答案 我认为在大多数用例中“大量”是一种夸大其词。由于beforefieldinitflag的存在/不存在,拥有静态构造函数(即使它什么也不做)会影响类型初始化时间.当你有一个静态构造函数时,对时间有更严格的保证。对于大多数代码,我认为这没有太大区别-但如果您是紧密循环并访问类的静态成员,则可能会有所不同。就我个人而言,我不会太担心它-如果您怀疑它与您的真实应用程序相关,那么测试它而不是猜测。微基准测试很可能会夸大此

c# - 缓存或不缓存 - GetCustomAttributes

我目前有一个功能:publicstaticAttributeGetAttribute(MemberInfoMember,TypeAttributeType){Object[]Attributes=Member.GetCustomAttributes(AttributeType,true);if(Attributes.Length>0)return(Attribute)Attributes[0];elsereturnnull;}我想知道是否值得将一个属性的所有属性缓存到一个Attribute=_cache[MemberInfo][Type]字典,这需要使用不带任何类型参数的GetCust

c# - 在 int 上使用扩展方法

我正在阅读有关扩展方法的内容,并与他们一起闲逛看看它们是如何工作的,我尝试了这个:namespaceclunk{publicstaticclassoog{publicstaticintdoubleMe(thisintx){return2*x;}}classProgram{staticvoidMain(){Console.WriteLine(5.doubleMe());}}}它按预期工作,使用doubleMe方法成功扩展int,打印10。接下来,作为一个C老手,我想知道我是否可以这样做:namespaceclunk{publicstaticclassBoolLikeC{publicsta

c# - 如何在 Visual Studio 控制台应用程序中禁用控制台窗口的关闭按钮?

我需要禁用visualstudio控制台的控制台窗口中的关闭按钮用C#编写的应用程序。我希望应用程序运行直到完成并且用户不应该能够通过关闭控制台窗口来停止它。我正在使用visualstudio2010 最佳答案 下面是一个在控制台窗口禁用关闭按钮的例子:classProgram{privateconstintMF_BYCOMMAND=0x00000000;publicconstintSC_CLOSE=0xF060;[DllImport("user32.dll")]publicstaticexternintDeleteMenu(Int

c# - 从另一个类调用变量

在C#中如何从另一个公共(public)类访问一个公共(public)类中的变量?我有:publicclassVariables{staticstringname="";}我需要从以下位置调用它:publicclassMain{}我在控制台应用程序中工作。 最佳答案 那就是:Console.WriteLine(Variables.name);它还需要公开:publicclassVariables{publicstaticstringname="";} 关于c#-从另一个类调用变量,我们在