代码如下:控制台程序,真的很奇怪,高手帮忙分析下
using System;
using System.Collections.Generic;
using System.Text;namespace BaseSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Person my = new Student("王", 19);
        }
    }    class Person
    {
        private string name;
        private uint age;        public Person(string sname, uint uage)
        {
            this.name = sname;
            this.age = uage;
            Console.WriteLine(name);
            Console.WriteLine(age);
        }
    }  
}

解决方案 »

  1.   

    public Person(string sname, uint uage)
            {
                this.name = sname;
                this.age = uage;
                Console.WriteLine(name);
                Console.WriteLine(age);
            }
    请问这是什么?
      

  2.   

    难道不是的么?
    是重构的构造函数啊
    我没有写
    public Person()
    {
    }
    这个原始的构造函数,应该是要报错的呀
      

  3.   

    楼主是用vs2005开发的?vs2005 会默认自动帮你构建
    public Person()
    {
    }
    这个构造函数的
      

  4.   

    每个类都有构造函数,即使我们没有声明它,编译器也会自动地为我们提供一个默认的构造函数。实际上,任何构造函数的执行都隐式地调用了系统提供默认的构造函数base().
       如果我们在类中声明了如下的构造函数,
     C(....){..}
    它等价于
     C(....):base(){....}
      

  5.   


    using System;
    using System.Collections.Generic;
    using System.Text;namespace BaseSample
    {
        class Program
        {
            static void Main(string[] args)
            {
                Person my = new Student("王", 19);
                Person other = new Person();         //加上这个就出错了
            }
        }    class Person
        {
            private string name;
            private uint age;        public Person(string sname, uint uage)
            {
                this.name = sname;
                this.age = uage;
                Console.WriteLine(name);
                Console.WriteLine(age);
            }
        }  
    }
    看样子系统还是没有给我自动添加无参数的构造函数,是不是没有使用到无参数构造函数的话就没事情咯。
      

  6.   

    错误 1 “Person”方法没有采用“0”个参数的重载
      

  7.   

    你已经定义了带参数的构造函数,那么这个构造方法就是类唯一的构造方法了,除你再显示的定义一个不带参数的构造函数,否则 Person other = new Person();这样一定会报错,因为在类中没有Person()这个方法。你的类可以改成这样,这就是多态。
        class Person
        {
            private string name;
            private uint age;        public Person(){}
            public Person(string sname, uint uage)
            {
                this.name = sname;
                this.age = uage;
                Console.WriteLine(name);
                Console.WriteLine(age);
            }
      

  8.   

    概念不清所有的类都有构造函数(理论上包括静态类都有)。
    如果你没写构造函数(注意是没写),那么系统会自动给你加上一个不进行任何操作的无参构造函数。如果你写了,这个默认的构造函数就没了。这是从C++一脉相承的,而C++这么设定的原因是为了和C的结构兼容。