14得票2回答
.NET把字符串值存放在哪里?

我正在使用SOS调试扩展dll来检查String类型的内存布局,以下是结果。 !dso ESP/REG Object Name 0015EFC0 01c6b9cc System.String hello,world !do 01c6b9cc Name: S...

9得票2回答
C#函数重载规则

关于函数重载的规则是什么? 我有以下代码: public T genericFunc<T>() where T : Component, new() { T result = new T(); overloadedFunction( result ); } p...

7得票3回答
每次调用新方法时触发一个事件

我正在为一个C#应用程序制作一个日志记录器,需要记录每个方法调用的时间和执行时间。 我可以在每个方法开始时调用自己的EventLogger.LogMethodCall方法来实现这一点,但我想知道是否有一种方法可以让CLR在每次调用新方法时触发事件,这样我就不必手动调用我的方法了。 谢谢。

23得票5回答
装箱/拆箱可空类型 - 为什么要这样实现?

从CLR via C#关于值类型的装箱/拆箱中提取... 装箱:如果可空实例不是null,CLR将从可空实例中取出值并进行装箱。换句话说,具有值5的Nullable < Int32 >被装箱为具有值5的boxed-Int32。 拆箱:拆箱只是获得装箱对象的未装箱部分的引用。问题...

12得票9回答
语句块中的变量作用域

for (int i = 0; i < 10; i++) { Foo(); } int i = 10; // error, 'i' already exists ---------------------------------------- for (int i =...

7得票1回答
MSIL——仅根据整数,调用操作码如何知道要调用哪个方法?

我试图弄清楚MSIL如何仅存储整数就能表示对静态函数的调用。 例如,如果您添加对Interlocked.Increment(ref someVariable)的调用,则您的IL将包含以下内容: 0x28 | 0x12,0x0,0x0,0xA 管道运算符是我添加的,实际上0x28是调用指令...

24得票7回答
为什么Random.Next()总是返回相同的数字

请考虑以下方法:private static int GenerateRandomNumber(int seed, int max) { return new Random(seed).Next(max); } 在我的机器上,执行这个循环通过1500次迭代得到相同的数字: for (i...

33得票1回答
应该为非编译器目的使用ConditionalWeakTable<TKey, TValue>吗?

我最近在寻找一个使用弱引用的IDictionary,并在这里和这里的答案中发现了ConditionalWeakTable&lt;TKey,TValue&gt;类。 有一篇权威的MSDN文章介绍了这个类,并指出: 你可以在 System.Runtime.CompilerServices 命...

8得票10回答
是否存在一款Silverlight内存分析工具?

CLR分析器似乎无法与Silverlight CLR一起使用。是否存在其他内存分析器?

27得票1回答
为什么.NET JIT编译器会决定不内联或优化调用没有副作用的空静态方法?

我认为我观察到了 .NET JIT 编译器没有内联或优化掉调用没有副作用的空静态方法,这有点令人惊讶,考虑到一些专门的在线资源。 我的环境是 x64 上的 Visual Studio 2013,Windows 8.1,.NET Framework 4.5。 给定这个简单的测试程序(http...