在 .NET 中,有一个在 .NET 中调用的System.Text.Encoding
类mscorlib
。但是当你这样做时System.Text.Encoding.ASCII
,你可以访问 ASCII 编码类。
起初,我认为这是一类中的一类:
class Encoding {
class ASCII { ... }
...
}
但令人困惑的是,您也可以使用System.Text.ASCIIEncoding
来访问相同的功能。
无法反编译 .NET(因为 .NET Reflector 需要花钱,而且我不太了解 IL [所以没有 ildasm]),我无法理解这两个类是如何相等的。会是这样吗?
class ASCIIEncoding {
internal ASCIIEncoding() { ... }
/* static functions */
}
static class Encoding {
public static readonly ASCIIEncoding ASCII = new ASCIIEncoding();
...
}
这似乎是最有可能的方式,但函数原型是
public static Encoding ASCII { get; }
返回派生自的类Encoding
没有意义,因为 Encoding 是具有 Encoding 类型(ASCII、UTF-(7/8/16/32) 等)的类,所以这意味着ASCIIEncoding
也需要这些变量,不是吗?
任何人都可以帮助消除这种困惑吗?