我是C 程序员,而我是新的C#,我写了一个小程序来测试继承,所以这里源代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lesson3_Class_inherit_
{
public class Personne
{
public string Name;
public int Age;
public Personne() { }
public Personne(string _Name, int _Age)
{
Name = _Name;
Age = _Age;
Console.WriteLine("Constrcut Personne Calledn");
}
~Personne()
{
Console.WriteLine("Destruct Personne Calledn");
}
};
class Humain : Personne
{
public string Langue;
public Humain(string _Name, int _Age,string _Langue)
{
Console.WriteLine("Constrcut Humain Calledn");
Name = _Name;
Age = _Age;
Langue =_Langue;
}
};
class Program
{
static void Main(string[] args)
{
Humain H1 = new Humain("majdi", 28, "Deutsch");
Console.ReadLine();
}
}
}
输出:构造humain称为班级的构造没有称为为什么!!!在C 中,父类构造函数首先称为!请帮助!
在c#中,您必须使用基本关键字明确调用父构建器。因此,荷兰看起来像
class Humain : Personne
{
public string Langue;
public Humain(string _Name, int _Age,string _Langue) : base(_Name, _Age)
{
Console.WriteLine("Constrcut Humain Calledn");
Name = _Name;
Age = _Age;
Langue =_Langue;
}
};
,因为它调用默认构造函数。要调用其他构造函数,您需要写:
base(_Name, _Age);
在Humain构造函数的开头。
public Humain(string _Name, int _Age,string _Langue) : base(_Name, _Age)
{
Lange = _Langue;
}
尝试以这种方式调用基类构造函数:
class Humain : Personne
{
public string Langue;
public Humain(string _Name, int _Age, string _Langue) : base (_Name, _Age)
{
Console.WriteLine("Constrcut Humain Calledn");
Name = _Name;
Age = _Age;
Langue = _Langue;
}
}
根据您的要求,您甚至可以调用默认构造函数,而不是参数化构造函数。
public Humain(string _Name, int _Age, string _Langue) : base ()
{
Console.WriteLine("Constrcut Humain Calledn");
Name = _Name;
Age = _Age;
Langue = _Langue;
}