clr相关内容

堆和堆栈如何为C#中的struct实例和成员工作?

我正在读一本书,上面写着: 表示结构实例的变量不包含指向实例的指针;该变量包含实例本身的字段.由于变量包含实例的字段,因此不必取消引用指针即可操作实例的字段.以下代码演示了引用类型和值类型的不同之处 class SomeRef {public Int32 x;}struct SomeVal {public Int32 x;}静态void ValueTypeDemo(){SomeRef r ..
发布时间:2021-04-18 19:01:25 C#/.NET

在多个程序集中具有相同的完全限定的类名

当我们在两个不同的程序集中定义相同的名称空间和类名称时,.NET编译器(然后是运行时的CLR)如何确定要使用哪个类,而无需使用外部别名来帮助它决定?考虑以下示例-全部在单个.cs文件中: 使用系统;命名空间废话{班级计划{静态void Main(string [] args){字符串s = new System.String();}}}命名空间系统{公共类字符串{//这里没有什么}} 此代码 ..
发布时间:2021-04-11 20:52:11 C#/.NET

在.net 4.0 wpf应用程序中使用.net 2.0 dll

我试图在针对.Net 4框架的WPF应用程序中添加对.Net 2.0 DLL的引用. 我在app.config文件中添加了 .WPF应用程序构建良好,但是在尝试访问.Net 2.0 DLL时在运行时遇到BadImageFormatException. “试图加载格式错误的程序" ..
发布时间:2021-04-02 18:31:16 C#/.NET

CLR 2.0和CLR 4.0之间的区别

我已经阅读了无数有关C#4.0的新功能的博客,帖子和StackOverflow问题.甚至WPF 4.0的新功能也开始公开发布.我找不到并想知道的内容: 从C#/WPF开发人员的角度来看,CLR 4.0的主要变化是什么? 整个CLR 4.0有哪些主要变化? 我认为,在内部,大多数更改是针对新的动态语言和并行编程.但是还有其他重大改进吗?因为仅是语言改进,所以语言改进.您只需要新的编译器 ..
发布时间:2021-04-02 18:30:34 其他开发

是否可以读取实习生池中的所有字符串?

众所周知,在某些情况下,在C#中使用字符串时,CLR会将字符串实习作为一种优化. 所以我的问题是: 是否可以读取实习生池中当前存在的所有字符串? 有没有一种方法可以获取对每个实习生字符串的引用计数? 是否可以从单独的进程空间读取实习生池? 如果这些都不可行,那么不允许这些用例的原因是什么? 在某些情况下监视内存使用情况时,我认为这很有用.在处理敏感信息时,它也可能很有用(尽 ..
发布时间:2021-04-01 22:01:37 C#/.NET

如何在CLR中使用多重继承?

我遇到了一些来源,例如此声称在CLR中支持声称多重继承(多种基本类型)(但在C#和其他语言中不支持).根据本文描述的方法,似乎它比直接支持更像是一个技巧,但我仍然想知道它应该如何工作. 如果创建自定义VTable并在VTFixup中使用它实际上可以实现多重继承,那么如何在CIL中实际实现它并使用它呢? 解决方案 当前,CLR不支持多重继承.但是,事实证明(从标准c ++来看)编译器即 ..
发布时间:2021-04-01 21:59:27 C#/.NET

在C#应用程序中使用加密程序集

我试图保护我在WPF应用程序中使用的dll免受简单复制.我的解决方案是对这些dll的代码部分进行加密,并在将其加载到我的应用程序时解密. 有一种使用组装的可行方法: 使用(FileStream fs = new FileStream(@"Mydll.dll",FileMode.Open,FileAccess.Read)){字节[]文件=新的字节[fs.Length];fs.Read(fil ..
发布时间:2021-04-01 21:58:35 C#/.NET

有此&明确的此调用约定

我在HasThis 和 ExplicitThis 调用约定.cs,0e671adbca70e090"rel =" nofollow noreferrer“>.NET Framework参考源,因此我开始怀疑: 它们何时由编译器设置? 是否有使用此调用约定组合的示例(在“现实世界"托管程序中)? MSDN 将它们描述为: ExplicitThis 指定签名是功能指针签名,表 ..
发布时间:2021-04-01 21:49:30 C#/.NET

为什么跳过仅对动态方法允许的可见性检查?

我正在移植广泛使用 DynamicMethod 的代码,以允许进行预编译,以获得更好的冷启动性能.我注意到 DynamicMethod 可以被JITted并在跳过可见性检查的情况下执行,这使它们可以访问私有嵌套类型,而普通程序集则不能(或者它们不能吗?我看不到任何明显的方法)加载程序选项).此设计决定的依据是什么? 解决方案 我需要挥手示意这个问题,因为CAS永远都是复杂的.skipVis ..
发布时间:2021-04-01 20:42:28 C#/.NET

在具有多个对应名称的枚举值上调用ToString()时,由什么决定选择哪个名称?

在具有多个对应名称的 enum 值上调用 ToString()时,由什么决定选择哪个名称? 问题的详细解释如下. 我确定这不是由以下任何一项唯一确定的:字母顺序;申报单;也不是名字的长度. 例如,考虑到我想拥有一个枚举,其中的数值直接对应于实际用途(例如,颜色的rgb值). 公共枚举RgbColor{黑色= 0x000000,红色= 0xff0000,绿色= 0x00ff00, ..
发布时间:2021-04-01 20:30:02 C#/.NET

如何有条件地调用具有约束的泛型方法?

假设我有一个不受约束的通用方法,该方法适用于所有支持相等性的类型.它执行成对相等性检查,因此可以在 O(n 2 )中工作: 公共静态int CountDuplicates(IList列表){/* ... */} 我还有一个受约束的通用方法,该方法仅适用于支持排序的类型.它从对 O(n log n)中的列表进行排序开始,然后一遍计算所有重复项: 公共静态int CountDu ..
发布时间:2021-04-01 20:17:53 C#/.NET

如何在.NET VM(CLR)中查看JIT编译的代码

如何跟踪JIT编译器生成的本机代码? 谢谢 解决方案 在Visual Studio中,在代码中放置一个断点并开始调试.中断时,打开“反汇编"窗口(“调试">"Windows">“反汇编"或Alt + Ctrl + D). ..
发布时间:2021-02-12 18:55:10 C#/.NET

为什么CLR不调用自动处理

我希望我能正确了解我的事实,如果不正确,请纠正我. 1)您使用Dispose清理非托管资源,这意味着不会对其进行垃圾回收. 2)值类型存储在堆栈上,引用类型存储在堆上,指向引用类型的指针存储在堆栈上(对此不确定(但我不确定,但我认为是正确的)) 3)垃圾过滤器由垃圾收集器调用. 4)对于引用类型,CLR而不是用户(尽管他可以)调用垃圾回收,但是当值类型超出范围时,值类型将被 ..
发布时间:2020-11-12 20:22:53 C#/.NET

未分配的局部变量之谜

int x; 如果(Q()) x = 123; if(R()) Console.WriteLine(x); //非法 int x; 如果(Q()) x = 123; if(false) Console.WriteLine(x); //合法!! 我想知道为什么第二个是合法的而前一个是抛出“使用未分配的局部变量”的编译时间吗 解决方案 这告诉编译器 ..
发布时间:2020-10-03 01:56:02 C#/.NET

.NET MSIL:命令如何检测操作数的大小?

MSIL中有一个 add 命令,用于添加两个参数(从堆栈弹出,添加,压入堆栈)。如何知道它是否必须弹出2个字节或4或8个字节? 在Java中,不同的字节码(fadd,dadd,iadd等)如何执行?他们在.NET中处理此问题? 解决方案 Java字节码经过优化,可以由解释器执行,早期的JVM还没有Hotspot 。 .NET msil从一开始就设计为始终保持不变,不需要为不同的操作数 ..
发布时间:2020-10-03 01:55:59 C#/.NET

clr.dll在Microsoft .NET 4.6.1上导致800703e9

在Excel 2013中使用在基于.NET的Windows应用程序中正常运行的DLL时,它会使clr.dll崩溃: 应用程序:EXCEL.EXE 框架版本:v4.0.30319 说明:由于.NET运行时IP 6F033A0F(6EDA0000)的内部运行时发生内部错误,退出过程为800703e9,该进程已终止。 错误的应用程序名称:EXCEL.EXE,版本:15.0.4833.10 ..
发布时间:2020-10-03 01:55:53 C#/.NET