草庐IT

C++条件编译

全部标签

C# 编译器优化

我想知道是否有人可以向我解释编译器到底做了什么让我观察到一个简单方法的性能差异如此之大。publicstaticuintCalculateCheckSum(stringstr){char[]charArray=str.ToCharArray();uintcheckSum=0;foreach(charcincharArray){checkSum+=c;}returncheckSum%256;}我正在与一位同事合作,为消息处理应用程序做一些基准测试/优化。在VisualStudio2012中使用相同的输入字符串对此函数进行1000万次迭代大约需要25秒,但是当使用“优化代码”选项构建项目时

c# - 编译日期和时间

是否有一些聪明的方法来获取构建/编译dll的日期和时间?我正在使用程序集版本编号和反射来在部署应用程序时检索和显示此信息。但在某些情况下,知道dll实际编译的时间比自动递增的版本号更方便。由于应用程序的部署方式,我认为dll文件本身的修改日期不可靠。Dimassemblies=AppDomain.CurrentDomain.GetAssembliesDimassemblyNameAsStringDimassemblyVersionAsStringForEachassemblyInassembliesassemblyName=assembly.GetName.Name.ToStringa

c# - 为什么断点条件执行失败?

我想在短时间内暂时禁用断点,所以我设置了一个条件断点,条件如下:(global::System.DateTime.Now当遇到这个断点时,会弹出一个对话框,说Theconditionforabreakpointfailedtoexecute.Theconditionwas'(global::System.DateTime.Now为什么运行时拒绝计算表达式?如何在不修改调试源代码的情况下获得所需的行为? 最佳答案 从VS2012开始,您必须切换到托管兼容模式,才能使用条件断点。为什么(抱歉,由于该链接已损坏,不再有来自MS的原因。我添

c# - 在嵌套 If 中应用两个条件或将单个条件与 And 结合使用哪个更好?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭3年前。Improvethisquestion嵌套If或单个ifwithAnd运算符,哪种方法更好?单个If和if(txtPackage.Text!=string.Empty&&txtPackage.Text=="abc"){//}嵌套if(txtPackage.Text!=string.Empty){if(txtPackage.Text=="abc"){//}}

c# - 使用条件运算符时没有隐式转换

这个问题在这里已经有了答案:Nullabletypesandtheternaryoperator:whyis`?10:null`forbidden?[duplicate](9个回答)关闭9年前。我有以下类(class):abstractclassAClass{}classFoo:AClass{}classBar:AClass{}当我尝试使用它们时:AClassmyInstance;myInstance=true?newFoo():newBar();这段代码不会编译,因为“无法确定条件表达式的类型,因为‘CSharpTest.Class1.Foo’和‘CSharpTest.Class1.

c# - 编译的 C# lambda 表达式性能与叠层

考虑这个类://////Dummyimplementationofaparserforthepurposeofthetest///classParser{publicListReadList(FuncreadFunctor){returnEnumerable.Range(0,10).Select(i=>readFunctor()).ToList();}publicintReadInt32(){return12;}publicstringReadString(){return"string";}}我尝试使用已编译的lambda表达式树生成以下调用:Parserparser=newPars

c# - finally block when 后编译器生成无限循环

我使用的是针对.Net4.6.2的标准VS2015编译器。编译器在finallyblock失败后发出无限循环。一些例子:调试:IL_0000:nop.try{IL_0001:nopIL_0002:nopIL_0003:leave.sIL_000c}//end.tryfinally{IL_0005:nopIL_0006:br.sIL_000a//loopstart(head:IL_000a)IL_0008:nopIL_0009:nopIL_000a:br.sIL_0008//endloop}//endhandler//loopstart(head:IL_000c)IL_000c:br.s

c# - VB.NET WithEvents 关键字行为 - VB.NET 编译器限制?

我正在努力变得像熟悉VB.NET(我工作场所使用的语言)一样熟悉C#。学习过程中最好的事情之一是,通过学习另一种语言,您往往会更多地了解您的主要语言——像这样的小问题会弹出:根据我发现的来源和过去的经验,VB.NET中声明为WithEvents的字段能够引发事件。我知道C#没有直接等效项——但我的问题是:VB.NET中没有this关键字的字段不能引发事件,有没有办法在C#中创建同样的行为?VB编译器是否简单地阻止这些对象处理它们的事件(同时实际上允许它们像往常一样引发事件)?我只是好奇;我对这个问题没有任何特定的应用...... 最佳答案

c# - 如何修复 'T' 是 'type parameter' 但被用作 'variable' 编译错误

我需要检查泛型类型参数T是MyEntity还是它的子类。下面的代码会导致这个编译器错误:'T'isa'typeparameter'butisusedlikea'variable'如何修复?publicclassMyEntity{}staticvoidTest(){//Error34'T'isa'typeparameter'butisusedlikea'variable'if(TisMyEntity){}} 最佳答案 您可以使用IsAssignableFromType上的方法检查是否有一个Type可以分配给另一个。if(typeof(

c# - 调用堆栈上的条件断点

是否可以在VisualStudio2010中指定一个断点,仅当调用堆栈中的调用方法满足某些特定条件时才命中?例如,很可能是方法名称。理想情况下,我正在VisualStudio本身中寻找解决方案,例如条件断点,但我将满足于在代码堆栈中测试方法名称并具有编码断点。我想要实现的是切断来自特定调用者的调用。 最佳答案 右键单击断点,选择“条件”并使用如下内容:newSystem.Diagnostics.StackTrace().ToString().Contains("YourMethodName")