clr相关内容
汉斯和我有小的讨论最近关于这个问题,我很好奇它是如何真正落实。 请参阅在这里评论初始说话:解决方案 嗯,我做了一些调查......详细信息可在我的博客文章 要短,只是总结从那里: 至于SSCLI20汉斯是完全正确的。还有的发放装甲运兵车和排队计时器真正独立的线程。感谢您的坚持,顺便说一句。我接到一个机会去挖掘一些有趣的事情:) 在新系统中,仍然可以在没有额外的线程来实现。我只是在错误的假设
..
我使用SOS调试扩展DLL检查String类型的内存布局。而下面是结果。 !DSO ESP / REG对象名称 0015EFC0 01c6b9cc System.String你好,世界 !做01c6b9cc 名称:System.String 方法表:6de3f9ac EEClass:6db78bb0 尺寸:36(0X24)字节 文件:C:\ WINDOWS \ Mi
..
在使用ILSpy检查System.String的code,我发现有标记为MethodImplOptions.InternalCall一些方法,如: [SecurityCritical] [MethodImpl(MethodImplOptions.InternalCall) 内部静态外部INT nativeCompareOrdinalEx(STRA字符串,整数索引A,串STRB,INT inde
..
一个后续到是否.NET JIT优化空循环走?: 下面的程序只运行一个空循环十亿倍,并打印出运行的时间。它需要700毫秒我的机器上,我很好奇,如果有一种方式来获得抖动优化掉的空循环。 使用系统; 命名空间ConsoleApplication1 { 类节目{ 静态无效的主要(){ VAR开始= DateTime.Now; 对
..
下面的C#code似乎运行的慢的时候与VS2010比VS2008建:在酷睿i5 X64 Win7的8 GB内存的PC,VS2008的内置版本在大约7.5秒排序字符串,而不是VS2010内置版本需要约9秒。这是为什么呢? 这有什么错我的code? 有没有在VS2010的排序算法的变化? 有没有什么潜在的CLR不同,使得性能更糟糕? 使用系统; 使用System.Collections.G
..
从CLR通过C#的拳击/拆箱值类型 解... 在拳击:如果可空实例不是空,CLR的取值出可空实例和箱子吧。换句话说一个可空< INT32> ,值为 5 被装箱成盒装-的Int32 为5的值。 在拆箱:拆箱仅仅是获得一个引用的盒装对象的拆箱部分的行为。问题是,装箱值类型不能简单地拆箱到该值类型的可空版本,因为装箱值不具有布尔hasValue的字段在里面。所以,当拆箱值类型为一个可空的
..
我试图找出参数的最大数量在C#中的方法可以有什么。我检查无处不在的答案,包括C#官方文档,MSDN,和一对夫妇的CLR引用,我无法找到答案。有没有人有这个问题的答案? 解决方案 为了推动方法的参数压入堆栈,编译code具有以下MSIL运codeS可供选择: ldarg ldarg.0 ldarg.1 ldarg.2 ldarg.3 ldarg.S ldarg.0 到 ldarg.
..
CLR探查似乎不使用Silverlight的CLR工作。有没有另一种内存分析器存在吗? 解决方案 似乎没有为一个产品尚未推出。然而,随着建议在这个论坛主题,您可以将您的Silverlight应用程序一个WPF应用程序和配置文件: 有没有工具,现在却作为一种解决方法,你可以很容易地创建一个桌面(WPF)版本的Silverlight客户端从同一个code群和一些调整(见苏格兰人的博客上这
..
这两个文档页面似乎矛盾关于这个主题: ValueType.Equals方法说:“默认的实现equals方法的使用反射以比较的obj和此实例的相应字段。“ 的Object.Equals方法(对象)说“的Equals的默认实现支持引用类型引用相等,和按位平等的值类型。“ 因此,它是按位的平等或反射? 我参加了一个一瞥值类型来源$ C $ C,发现评论说: //如果没有GC在引用这个
..
我做NGEN上一个C#可执行文件。这是成功的,但我无法揣摩出生成的文件是在我的电脑。 MSDN说,它应该是在原生图像缓存,依然没能找出它在哪里。 编辑:我想在其上运行objdump的,所以我需要的物理文件 EDIT2:我运行NGEN的putput是: C:\ Documents和Settings \ NMEA \我的文档\ Visual Studio 2008的\项目\康寿 eApplicat
..
我想验证我的理解C#/。NET / CLR对待值类型和引用类型。我已经看了这么多矛盾的解释,我STIL 这是我今天明白了,请纠正我,如果我的假设是错误的。 值类型,如int等住在栈上,引用类型住在托管堆中然而如果引用类型有例如有一个类型的实例变量双,这将生活连同其在堆对象 第二部分是我最困惑的。 让我们考虑一个简单的类叫做人。 人有一个名为Name属性。 可以说,我在另一个类中创建人物
..
我觉得我认识的一类答案,只是想确认我的理解是正确的。比方说,我有一个 ClassA的和它的命名实例 A 。当 a.MethodA()调用: (1)CLR找到 ClassA的的类型由 A 类型的指针的>在堆(类型已经装载到堆) (2)找到治法的类型,如果没有找到,去其基本类型,直到对象类。 也许我的理解是不太precise,但我认为这是正确的basicly(纠正我,如果它是错的!)。这里谈到的
..
我们的应用程序是用VS 2008,使用LINQ和有目标框架设置为.NET Framework3.5。 它的工作原理确定,当只有.NET 3.5或4被安装在机器上。 然而,当LINQ的访问,因为它看起来在.NET 3.5库。其中两个。NET 2(或3.0)和.NET 4的安装,应用程序加载与.NET 2台,和崩溃 使用的app.config标签似乎并没有帮助,因为它指定的CLR版本,也就是2的
..
有没有定义一个结构与参考类型成员(而不是将其定义为一类)的任何意义吗?例如,以限定该结构 公共结构SomeStruct { 字符串名称; INT32的地方; } 我问,因为我知道,一个结构是值类型,并确定它的一些引用类型没有任何意义。 我说得对不对?有人能解释一下吗? 解决方案 十次有九次,你应该创建一个类,而不是摆在首位的结构。结构和类有很在C#中不同的语义,
..
我很新的.NET框架,所以我想知道究竟是CLR与放大器之间的差异; CLI?无论从什么我已阅读到目前为止,这似乎表明,CLI是CLR的一个子集。但并非一切都在CLR强制?究竟什么可以被排除在外的CLR创建一个CLI? 解决方案 在 CLR 是微软实施的 CLI标准。
..
我一直在开发使用.NET相当一段时间,现在的应用程序。但是,我仍然不 确定如何在CLR知道,.NET应用程序已启动。有没有像每个应用程序的CLR的一个实例?我不认为这是可以的情况下,只有一个GC为所有的.NET应用程序管理所有的记忆。是否CLR那种在后台运行?我很困惑。 解决方案 嗯,让我来拍这个了。 有人建立在C#.NET应用程序,或.NET“中间语言”,或其他托管语言。 在编译器的
..
.NET有一个名为远程处理,您可以在单独的应用程序域,甚至在物理机之间传递物体周围的事情。我不完全理解魔术是如何完成的,因此这个问题。 在远程处理有传递对象围绕两个基地的方式 - 他们要么可以序列化(转换成一串字节和重建的另一端),也可以从这是pretty的清凉功效神奇。而且我不喜欢魔法编程。纵观 MarshalByRefObject的与反射我看不到任何会使其有别于任何其他典型的对象。甚至没有一
..
注意:我可能选择了错误的字称号;也许我真的在谈论的多项式的生长在这里。看到这一问题最终的基准测试结果。的 让我们先从这三个递归通用接口 &匕首; 的重新present不变的堆栈: 接口ISTACK< T> { INonEmptyStack< T,ISTACK< T>>推送(T X); } 接口IEmptyStack< T> :ISTACK<
..
是CLR加载和初始化每次,当一个新的托管应用程序加载,并有一个托管的应用程序已经present? 例如。如果我的机器上,应用“TestApp”运行之后,我开始另一个应用程序“DemoApp”。在这种情况下,wiill CLR被再次加载DemoApp?否则将使用由TestApp加载的同一个? 解决方案 是的,和组件JIT编译的,堆的分配等等。 Windows映像加载器会有点帮助,但总的来说CL
..
我需要调用对象的方法在另一个应用程序域(通过参数,并得到结果)。想法? UPD两个AppDomain中的被我的code(主机应用程序创建它,然后我的code被调用)创建没有。我怎样才能获得一个AppDomain中从另一个? 解决方案 如果您创建另一个域,例如对象与 AppDomain.CreateInstanceAndUnwrap ,所有你需要调用另一个域中的对象是调用对象的方法。 做一个
..