为什么C#内置类型包含实现?

时间:2019-01-09 11:55:00

标签: c# .net clr roslyn

众所周知,内置类型(如Int32 / Double / ...)是在编译器级别实现的,用户无法实现诸如Int32之类的递归结构:

public readonly struct Int32 : IComparable, IConvertible, IFormattable, IComparable<int>, IEquatable<int>, ISpanFormattable
{
    private readonly int m_value; // Do not rename (binary serialization)

考虑将int作为Int32的别名,我们在这里有无法解决的递归。但这很好,因为它得到了编译器的“特殊理解”。

但是,我想知道为什么它根本不包含任何实现。如果您查看the file,就会发现有些代码似乎是实际运行时实际使用的。

我想知道为什么bultin类型不只是存根?我首先想像它可以用作盒装值的实现,但是由于它被声明为struct,因此对我不起作用。但是,使用编译器黑魔法,一切皆有可能。但是我不确定。

0 个答案:

没有答案