.net System.Text.Encoding类是如何工作的?
在.NET中,.net System.Text.Encoding类是如何工作的?,.net,character-encoding,mscorlib,.net,Character Encoding,Mscorlib,在.NET中,mscorlib中有一个名为System.Text.Encoding的类。但是当您执行System.Text.Encoding.ASCII时,您可以访问ASCII编码类 起初,我认为这是一个班级中的一个班级: class Encoding { class ASCII { ... } ... } 但令人困惑的是,您还可以使用System.Text.ascienceoding访问相同的函数 无法对.NET进行反编译(因为.NET Reflector需要花钱,而且我对I
mscorlib
中有一个名为System.Text.Encoding
的类。但是当您执行System.Text.Encoding.ASCII
时,您可以访问ASCII编码类
起初,我认为这是一个班级中的一个班级:
class Encoding {
class ASCII { ... }
...
}
但令人困惑的是,您还可以使用System.Text.ascienceoding
访问相同的函数
无法对.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; }
返回从编码派生的类是并没有意义的,因为编码是一个具有编码类型(ASCII、UTF-(7/8/16/32)等)的类,所以这意味着ascienceoding
也需要这些变量,不是吗
有人能帮忙澄清这一混乱吗
返回从编码派生的类并没有意义,因为编码是一个具有编码类型(ASCII、UTF-(7/8/16/32)等)的类,所以这意味着AscienceODing也需要这些变量,不是吗
不,因为Encoding.ASCII
etc是静态属性,可能由静态字段支持(尽管这是一个实现细节-属性每次都可以创建一个新实例,或者它使用的asciencoding
中可能有一个静态内部字段,等等)
就是这样,
public class BaseClass
{
private readonly static BaseClass firstDerived = new FirstDerived();
private readonly static BaseClass secondDerived = new SecondDerived();
public static BaseClass First
{
get { return firstDerived; }
}
public static BaseClass Second
{
get { return secondDerived; }
}
}
public class FirstDerived : BaseClass {}
public class SecondDerived : BaseClass {}
这是完整的代码——尽管对于实际执行任何操作的派生类来说都是无用的。确保你理解了它的每一点工作原理,然后将其应用到编码中
返回从编码派生的类并没有意义,因为编码是一个具有编码类型(ASCII、UTF-(7/8/16/32)等)的类,所以这意味着AscienceODing也需要这些变量,不是吗
不,因为Encoding.ASCII
etc是静态属性,可能由静态字段支持(尽管这是一个实现细节-属性每次都可以创建一个新实例,或者它使用的asciencoding
中可能有一个静态内部字段,等等)
就是这样,
public class BaseClass
{
private readonly static BaseClass firstDerived = new FirstDerived();
private readonly static BaseClass secondDerived = new SecondDerived();
public static BaseClass First
{
get { return firstDerived; }
}
public static BaseClass Second
{
get { return secondDerived; }
}
}
public class FirstDerived : BaseClass {}
public class SecondDerived : BaseClass {}
这是完整的代码——尽管对于实际执行任何操作的派生类来说都是无用的。请确保您完全理解其工作原理,然后将其应用于编码
…对于.NET源代码,请参见此处:您正在移动设备上开发软件?对于.NET源代码,请参见此处:您正在移动设备上开发软件?