System.Text.Encoding
.NET にはinというクラスがありますmscorlib
。ただし、 を実行するSystem.Text.Encoding.ASCII
と、ASCII エンコーディング クラスにアクセスできます。
最初は、これはクラスの中のクラスのようなものだと思っていました:
class Encoding {
class ASCII { ... }
...
}
しかし、紛らわしいのは、 を使用System.Text.ASCIIEncoding
して同じ機能にアクセスできることです。
.NET を逆コンパイルできない (.NET Reflector にはお金がかかり、IL をよく理解していないため [ildasm がない])、2 つのクラスがどのように等しいかについて頭を悩ませることはできません。このようなものでしょうか?
class ASCIIEncoding {
internal ASCIIEncoding() { ... }
/* static functions */
}
static class Encoding {
public static readonly ASCIIEncoding ASCII = new ASCIIEncoding();
...
}
これは最も可能性の高い方法のように思えますが、関数のプロトタイプは
public static Encoding ASCII { get; }
Encoding は Encoding タイプ (ASCII、UTF-(7/8/16/32) など) を持つクラスであるため、派生したクラスを返すEncoding
ことは意味がありません。つまり、ASCIIEncoding
これらの変数も必要になるということですよね?
誰でもこの混乱を解消するのを助けることができますか?