求教高手,Encoding这个类里面有编码类型这个属性。为啥在传参的时候不用实例化,这个类貌似是个抽象类,继承了一个接口。比如
StreamWriter sw = new StreamWriter(fs, Encoding.Default);这边是个啥道理呢。encodingC#编码类

解决方案 »

  1.   

    对的, CLR中的Encoding是在System.Text命名空间下的,它是一个抽象类(abstract class),  所以不能被直接实例化
    参考MSDNhttp://msdn.microsoft.com/zh-cn/library/system.text.encoding(v=vs.100).aspx
      

  2.   

    不是不用实例化,而是它已经被实例化了,这里的Encoding.Default是一个静态属性public static Encoding Default
    {
        get
        {
            if (defaultEncoding == null)
            {
                defaultEncoding = CreateDefaultEncoding();
            }
            return defaultEncoding;
        }
    }
      

  3.   

     Encoding.Default是Encoding类的静态成员变量,已经实例化
      

  4.   


    实现类可以实例化不是?可以返回一个实例,该实例可以扮演抽象类的角色。abstract class My
    {
        public readonly static My UTF8 = new MyUtf8();
        private class MyUtf8 : My
        {}
    }