Tag: clr

性能惊喜与“为”和可为空的types

我只是修改了C#深入处理可空types的第4章,我添加了一个关于使用“as”运算符的部分,它允许您编写: object o = …; int? x = o as int?; if (x.HasValue) { … // Use x.Value in here } 我认为这是非常简洁的,它可以提高C#1的性能,使用“is”后跟一个cast – 毕竟,这样我们只需要dynamictypes检查一次,然后进行简单的值检查。 但是,这似乎并非如此。 我已经在下面包含了一个示例testing应用程序,它基本上总结了一个对象数组中的所有整数 – 但是数组包含了大量的空引用和string引用以及盒装整数。 该基准测量了您在C#1中使用的代码,使用“as”运算符的代码,以及用于踢LINQ解决scheme的代码。 令我惊讶的是,在这种情况下,C#1代码速度提高了20倍 – 即使是LINQ代码(由于涉及到迭代器,我预计它会更慢)比“as”代码更胜一筹。 可执行文件isinst的.NET实现是否真的很慢? 是额外的unbox.any导致问题吗? 有没有另外的解释呢? 目前感觉就像在性能敏感的情况下,我将不得不包含使用这个警告。 结果: 演员:10000000:121 如:10000000:2211 LINQ:10000000:2143 码: using System; using System.Diagnostics; using System.Linq; class Test { const int Size = 30000000; […]

我们是否总是在类中包含一个默认的构造函数?

我有一位同事问过这个问题,我们是否应该在一个类中总是包含一个默认构造函数? 如果是这样,为什么? 如果不是,为什么不呢? 例 public class Foo { Foo() { } Foo(int x, int y) { … } } 我也有兴趣从专家那里得到一些灯。

浮动与双重performance

我做了一些时间testing,还读了一些像这样的文章(最后一条评论),看起来像在发布构build,浮点数和双精度值采取相同的处理时间量。 这怎么可能? 当float与double值相比精确度和精度较低时,CLR如何能够在相同的处理时间内翻倍? 编辑: 完全重复的“ 比c中的花车快两倍 ”

从另一个文件夹中parsing程序集引用

我正在开发一个应用程序,引用和使用某个Vendor的一些第三方程序集; 在开发框中我有这3个程序集在我的源代码树中的参考文件夹中,我可以引用它们并构build应用程序,应用程序构build,但不会运行,因为整个服务器应用程序未安装,但这是好的。 在我想要复制这个自定义应用程序的服务器上,运行我所引用的所有程序集都在文件夹中,如: D:\ProgramFiles\VendorName\ProductName\Support\API\Bin64 如果我复制我的小可执行文件在该文件夹中运行它,它完美的作品,但如果我把我的.exe在一个更合适的文件夹就像我想要的: D:\ProgramFiles\MyCompanyName\MyProduct\bin\… 它不起作用,因为它不能解决这些程序集。 我知道我可以在app.config中使用探测来指定我的EXE必须在哪个文件夹中查找引用,但是,如果程序集不在子文件夹中,更多的位于完全不同的位置。 我不想复制在我的应用程序文件夹中的所有供应商程序集,我不能只有那3个我引用,因为他们也加载其他程序集,除非我拥有所有这些(很多…),它不工作。 我没有做任何特别的事情,没有创build应用程序域,也没有通过reflection来加载程序集,只是希望CLR在应用程序启动或执行时parsing引用。 谢谢。 编辑:这里是最后的工作代码 static System.Reflection.Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { Logger logger = new Logger(); try { string RMSAssemblyFolder = ConfigurationManager.AppSettings["RMSAssemblyFolder"]; Assembly MyAssembly = null; string strTempAssmbPath = string.Empty; Assembly objExecutingAssemblies = Assembly.GetExecutingAssembly(); AssemblyName[] arrReferencedAssmbNames = objExecutingAssemblies.GetReferencedAssemblies(); AssemblyName myAssemblyName = Array.Find<AssemblyName>(arrReferencedAssmbNames, a => a.Name == args.Name); […]

什么是“根源参考”?

引用来自( 安全在C#不是在C + +中,指针/引用的简单返回,答案3)由Eric lippert。 此外,请注意,它不是任何引用,保持活着的人对象。 参考必须根植。 你可以有两个相互引用的Person对象,否则无法访问; 每个人都有参考的事实并不能使他们活着; 其中一个参考必须根植。 我不明白,有人可以解释什么是根源的参考?

如何检测正在使用哪个.NET运行时(MS与Mono)?

我想知道在程序的执行过程中,它是使用Mono运行时还是Microsoft运行时执行的。 我目前使用下面的代码来确定我是否在MS CLR上: static bool IsMicrosoftCLR() { return RuntimeEnvironment.GetRuntimeDirectory().Contains("Microsoft"); } 但是,这有点依赖于运行时的安装文件夹,我不确定这是否适用于所有安装。 有没有更好的方法来检查当前的运行时间?

初始化实例字段与本地variables

我一直想知道为什么在下面的例子中, 不要初始化实例字段(依靠它将有它的默认值)并访问它,而局部variables显然必须被初始化,即使我初始化为默认值它会得到反正… public class TestClass { private bool a; public void Do() { bool b; // That would solve the problem: = false; Console.WriteLine(a); Console.WriteLine(b); //Use of unassigned local variable 'b' } }

在Delphi中使用/不使用JCL托pipeCLR – 例子

有人可以请在这里举一个例子如何在Delphi中托pipeCLR? 我在这里读过类似的问题 ,但我不能使用JCL,因为我想在Delphi 5中托pipe它。谢谢。 编辑:这篇文章关于托pipe在Fox Pro CLR看起来很有前途,但我不知道如何从Delphi访问clrhost.dll。 编辑2:我放弃了对Delphi 5的要求。 现在我正在用Delphi 7试试JCL,但是我再次找不到任何例子。 这是我到现在为止: 我的C#程序集: namespace DelphiNET { public class NETAdder { public int Add3(int left) { return left + 3; } } } 我已经编译到DelphiNET.dll 。 现在我想用Delphi的这个程序集: uses JclDotNet, mscorlib_TLB; procedure TForm1.Button1Click(Sender: TObject); var clr: TJclClrHost; ads: TJclClrAppDomainSetup; ad: TJclClrAppDomain; ass: TJclClrAssembly; obj: _ObjectHandle; ov: OleVariant; begin […]

.NET Framework,CLR和Visual Studio版本号如何相互关联?

随着.NET 4.0和Visual Studio 2010的最近发布,越来越难以跟踪哪些.NET Framework版本在哪个版本的CLR上构build,并且属于Visual Studio的哪个版本。 有没有一个明确的表格显示这些关系?

C#和Java之间的主要区别是什么?

我只想澄清一件事。 这不是一个更好的问题,我留给其他人讨论。 我不在乎。 我在工作面试中被问及这个问题,我认为多学一点可能会有帮助。 这些是我能想到的: Java是“独立于平台”的。 那么现在你可以说有Mono项目,所以C#也可以考虑,但是我相信它有点夸张。 为什么? 那么,当一个新的Java版本完成时,它同时在它所支持的所有平台上都可用,另一方面,Mono实现中仍然缺lessC#3.0的多less特性? 或者是真的CLR与JRE我们应该在这里比较? Java不支持事件和委托。 我所知道的。 在Java中,所有方法都是虚拟的 开发工具:我相信目前还没有像Visual Studio这样的工具。 特别是如果你使用团队版本,你会明白我的意思。 请添加您认为相关的其他人。 更新:只是popup我的想法,Java没有像类,方法等自定义属性的东西或者呢?