首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-08-13 
C#求解 很简单的一个代码 本人刚刚接触C# codeusing Systemusing System.Collections.Genericusing Syst

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基类里面有两个构造函数的重载,两个构造函数都有参数,但你的继承类“中国人”里构造函数是没有给基类的构造函数提供参数。以致报错。


有三个办法:
一、给基类提供无参数的构造函数:
在Person类里写
public Person(string name){ }
二、初始化继承类的构造函数提供参数:
中国人 p2 = new 中国人(20);或中国人 p2 = new 中国人("ahgnsan", 20);
三、在继承类的构造函数中提供基类的参数:
public class 中国人 : Person
{
public 中国人():base(30){}
public string hukou { set; get; }
public void gonfu()
{
Console.WriteLine("wo da!!");
}
}


热点排行