Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net System.Text.Encoding类是如何工作的?_.net_Character Encoding_Mscorlib - Fatal编程技术网

.net System.Text.Encoding类是如何工作的?

.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

在.NET中,
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源代码,请参见此处:您正在移动设备上开发软件?