7得票4回答
为什么.NET代码编译成MSIL?

.NET代码首先编译为MSIL,然后JIT将其转换为机器相关的代码。有人能告诉我进行两步编译会带来哪些好处吗?谢谢。

10得票4回答
Mono.Cecil中type.IsAssignableFrom(derivedType)的等价方法

我正在使用Mono.Cecil来查找从给定类型派生的程序集中的类型。通常可以使用IsAssignableFrom()方法来完成,但我找不到Cecil中的等效方法。是否有这样的方法或其他检查方式? 谢谢 迈克

8得票1回答
宇宙起源如何可能?

我刚刚看到 COSMOS 是用 MSIL 语言编写的操作系统,我想知道这是怎么做到的?我一直认为 MSIL 需要 CLR 才能工作,而 CLR 需要在其后面运行一个操作系统。 谢谢解释。

17得票1回答
(正向)管道操作符是否会防止尾调用优化?

对于我在工作中遇到的参数优化问题,我编写了一个遗传算法来寻找一些好的设置,因为暴力解决方案是不可行的。不幸的是,当我第二天早上回来时,大多数时间都会出现一个StackOverflowException异常。 我已经使用F#相当长的时间了,所以我知道TCO和需要带有累加器参数的函数以及通常使用...

17得票2回答
LINQ是如何编译成CIL的?

例如:var query = from c in db.Cars select c; foreach(Car aCar in query) { Console.WriteLine(aCar.Name); } 这段代码编译后会变成什么样?背后会发生什么事情?

14得票2回答
.NET反编译器中"using"和"try...finally"的区别

鉴于以下C#代码,其中Dispose方法以两种不同的方式被调用:class Disposable : IDisposable { public void Dispose() { } } class Program { static void Main(stri...

13得票2回答
使用MethodBuilder生成动态IL时,是否可以跳过可见性检查?

使用DynamicMethod生成IL时,如果在DynamicMethod构造函数中为restrictedSkipVisibility参数提供'true',则可以调用方法和访问字段,否则这些操作将无法进行。 我更喜欢将动态IL发射到动态程序集中,以便我可以在构建时将生成的IL保存到程序集中。...

150得票1回答
为什么C#编译器将"!="翻译成">"?

我偶然发现C#编译器将这个方法转换为:static bool IsNotNull(object obj) { return obj != null; } …转换为这个CIL:.method private hidebysig static bool IsNotNull(object o...

12得票1回答
迭代器块在IL中生成try-fault。

尝试了迭代器块后,我注意到生成的IL代码不是我所期望的。生成了一个try-fault块,而不是我从未见过的try-finally块。我注意到编译器不允许我在“手写”的C#中使用fault关键字。 这两者有什么区别吗? C#代码:static IEnumerable<string&gt...

8得票2回答
这个IL指令中的-2是什么意思?

我正在探索一个简单程序的IL代码: long x = 0; for(long i = 0;i< int.MaxValue * 2L; i++) { x = i; } Console.WriteLine(x); 我使用Release模式构建了这段代码,生成了以下IL代码: ...