日期:2014-05-18  浏览次数:20767 次

C# 求解 很简单的一个代码 本人刚刚接触
C# code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 第二季
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person("ahgnsan", 20);
            p1.SayHello();
            中国人 p2 = new 中国人();
            p2.Name = "lisi";
            p2.gonfu();
            p2.hukou = "nanjing";
          
            
            Console.ReadKey();
        }
    }
    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Person(string name)
        {
            this.Name = name;
        }
        public Person(int Age)
        {
            this.Age = Age;
        }
        public Person(string name, int age)
        {
            this.Age = age;
            this.Name = name;
        }
        public void SayHello()
        {
            Console.WriteLine("你好");
        }
    }
    class 中国人 : Person
    {
        public string hukou { set; get; }
        public void gonfu()
        {
            Console.WriteLine("wo da!!");
        }
    }
}







错误 “第二季.Person”不包含采用“0”个参数的构造函数
求解~~!

------解决方案--------------------
C# code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.IO;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person("ahgnsan", 20);
            p1.SayHello();
            中国人 p2 = new 中国人();
            p2.Name = "lisi";
            p2.gonfu();
            p2.hukou = "nanjing";


            Console.ReadKey();
        }
    }
    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Person()
        {
        }
        public Person(string name)
        {
            this.Name = name;
        }
        public Person(int Age)
        {
            this.Age = Age;
        }
        public Person(string name, int age)
        {
            this.Age = age;
            this.Name = name;
        }
        public void SayHello()
        {
            Console.WriteLine("你好");
        }
    }
    class 中国人 : Person
    {

        public string hukou { set; get; }
        public void gonfu()
        {
            Console.WriteLine("wo da!!");
        }
    }

}

------解决方案--------------------
中国人 : Person

因为"中国人"这个类有一个默认的0参构造函数,这就要求它的基类也有一个0参的构造函数,但是不存在,所以报错了。

你只需要给Person添加一个无参的构造函数就行了。
------解决方案--------------------
C# code

class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        //这个类中要包含一个空参的构造函数
        public Person()
        {

        }
        //因为有带参数的构造函数,上面的空参函数是必须的
        public Person(string name)
        {
            this.Name = name;
        }

        public Person(int Age)
        {
            this.Age = Age;
        }
        public Person(string name, int age)
        {
            this.Age = age;
            this.Name = name;
        }
        public void SayHello()
        {
            Console.WriteLine("你好");
        }
    }

------解决方案--------------------
这个 到没注意到 我百度了下 得到结果

因为构造子类前必定构造父类 中国人继承自Person 而当你(new 中国人)的时候 首先会先构造Person 而你的父类Person又没有0个参数的构造函数 所以当然出错. 


------解决方案--------------------
继承的类,初始化的时候会先执行基类的构造函数,如你的“中国人”类,继承了Person类;则初始化“中国人”类的时候,会先执行基类Person的构造函数。Person基类里面有两个构造函数的重载,两个构造函数都有