37得票4回答
方法 MethodImplOptions.InternalCall 的作用是什么?

许多BCL中的方法都带有[MethodImpl(MethodImplOptions.InternalCall)]属性。这表示“该方法是在公共语言运行时内部实现的”。 为什么要以这种方式设计框架,而不是指定明确的CIL指令,强制运行时实现呢?最终,该属性为运行时创建了合同义务,但以一种对我来说...

37得票8回答
如何在.NET中调试System.TypeLoadException错误?

我在一个引用的程序集中收到以下错误: Could not load type 'System.Func`2' from assembly 'MyAssembly, ... 我的第一反应是看看MSDN说了什么: 当公共语言运行时无法找到程序集、程序集中的类型或不能加载类型时,就会抛出TypeL...

36得票3回答
.Net 4.0在Windows Server 2008下的应用程序崩溃于clr.dll

我有一个Windows应用程序定期每天运行,但会出现间歇性失败,如下所示EventViewer日志。Faulting application name: MyApplication.exe, version: 1.0.0.0, time stamp: 0x4d54829a Faulting m...

36得票5回答
C#如何将类型转换为可空类型?

除了普通的Cast和As之间的差异外,还有更多。 如果我知道apple是一个Fruit,我可以使用(Fruit)apple - 如果不是,它会抛出异常 as value可以检查是否为null以查看是否成功[不会抛出异常...] 然而,我一直在阅读@EricLippert的文章,其中有一...

36得票3回答
C#不支持静态索引器吗?

我已经尝试了几种不同的方式,但我得出结论认为这是不可能完成的。这是我过去从其他语言中喜欢的一种语言特性。这只是我应该放弃的东西吗?

36得票4回答
StringBuilder.ToString()中的----代表什么?

stringbuilder.cs的参考源页面在ToString方法中有以下注释:if (chunk.m_ChunkLength > 0) { // Copy these into local variables so that they // are stable ev...

35得票2回答
在64位机器上,基于AnyCPU和x64平台构建的C#应用程序性能对比

我需要在一台64位机器上部署一个C#应用程序,但是有一点可能它也需要被部署到32位机器上。我应该构建两个针对x86和x64平台的分开的可执行文件,还是应该选择构建一个针对“AnyCPU”平台的单个可执行文件(在项目属性的“生成”选项中指定)?如果一个针对“AnyCPU”平台构建的C#程序集在6...

35得票8回答
为什么不可变对象是线程安全的?

class Unit { private readonly string name; private readonly double scale; public Unit(string name, double scale) { this.name =...

35得票3回答
CLR对接口成员进行虚拟方法调用的实现

出于好奇:CLR如何将虚方法调用分派给接口成员以正确实现? 我知道CLR为每个类型维护一个VTable,其中包含每个方法的方法槽,并且对于每个接口,它还有一个附加的方法槽列表,指向相关的接口方法实现。但我不明白以下内容:CLR如何有效地确定要从类型的VTable中选择哪个接口方法槽列表? ...

34得票2回答
当一个.NET应用程序启动时会发生什么?

我已经使用.NET开发应用程序有一段时间了。但是,我仍然不确定CLR如何知道.NET应用程序已启动。是否每个应用程序都有一个CLR实例?我认为这不可能是情况,因为只有一个GC来管理所有.NET应用程序的内存。CLR是在后台运行吗?我感到非常困惑。