using System;class File

}class CommaDelimitedFile
{
    public CommaDelimitedFile(string file)
    {
        Console.WriteLine("Constructed with a file");
    }    public CommaDelimitedFile(File file)
    {
        Console.WriteLine("Constructed with a file object");
    }    public CommaDelimitedFile()
        : this("Default file")
    { 
    }
}class OverLoadConstructor
{
    static void Main(string[] args)
    {
        File file = new File();
        CommaDelimitedFile file2 = new CommaDelimitedFile(file);
        CommaDelimitedFile file3 = new CommaDelimitedFile("Some file names");
        CommaDelimitedFile file4 = new CommaDelimitedFile();
    }
}//Constructed with a file object
//Constructed with a file
//Constructed with a file按照我自己的理解当执行第3个构造器的时候是调用了第一个构造器,那么我应该如何重新设计这个构造器让他调用的是第二个构造器呢?也就是让他的输出变成
//Constructed with a file object
//Constructed with a file
//Constructed with a file object补充:public CommaDelimitedFile()
        : this("Default file")
    { 
    }
这句不怎么理解,谁能给我解释清楚点,我新学,概念的问题搞不清.

解决方案 »

  1.   

    public CommaDelimitedFile()
            : this(new File(...))
        { 
        }
      

  2.   

    楼主把代码改改看看顺序就理解了
        class Test
        {
        }
        class File
        {
        }    class CommaDelimitedFile
        {
            public CommaDelimitedFile(string file)
            {
                //Console.WriteLine("Constructed with a file");
                Console.WriteLine(file);
            }        public CommaDelimitedFile(File file)
            {
                Console.WriteLine("Constructed with a file object");
            }        public CommaDelimitedFile()
                : this("Default file")
            {
                Console.WriteLine("blank");
            }
    public CommaDelimitedFile()
            : this("Default file")
    当你的CommaDelimitedFile file4 = new CommaDelimitedFile();这句代码执行的时候,就调用无参数构造函数,但是你的无参构造函数又要写了这句代码this("Default file"),就在现执行无参构造函数之前先执行CommaDelimitedFile(string file)这个构造函数。
    你要调用第二个构造函数必须传值一个File 类型的对象的哈
      

  3.   

    调用过程现在理解了,但如何让重新设计这个构造器让他调用的是第二个构造器也就是让他的输出变成  
    //Constructed  with  a  file  object  
    //Constructed  with  a  file  
    //Constructed  with  a  file  object  
    还是不明白
    coowoo(性潮和尚
    public  CommaDelimitedFile()  
                   :  this(new  File(...))  
           {    
           }  
    中省略号的内容是什么?