3

私は 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 Called\n");

        }
        ~Personne() 
        {
            Console.WriteLine("Destruct Personne Called\n");
        }


    };
    class Humain :  Personne 
    {
        public string Langue;
        public Humain(string _Name, int _Age,string _Langue)
        {
        Console.WriteLine("Constrcut Humain Called\n");
         Name = _Name;
         Age = _Age;
         Langue =_Langue;
        }



    };

    class Program
    {
        static void Main(string[] args)
        {
            Humain H1 = new Humain("majdi", 28, "Deutsch");

            Console.ReadLine();
        }
    }
}

出力: Construct Humain Called\ とクラス Personne のコンストラクトが呼び出されなかった理由 !!! C++ では、親クラスのコンストラクターが最初に呼び出されます !! 助けてください !

4

4 に答える 4

6

C#では、baseキーワードを使用して親コンストラクターを明示的に呼び出す必要があります。だからHumainは次のようになります

class Humain :  Personne 
    {
        public string Langue;
        public Humain(string _Name, int _Age,string _Langue) : base(_Name, _Age)
        {
         Console.WriteLine("Constrcut Humain Called\n");
         Name = _Name;
         Age = _Age;
         Langue =_Langue;
        }



    };
于 2012-10-20T15:51:01.433 に答える
1

デフォルトのコンストラクターを呼び出すためです。他のコンストラクターを呼び出すには、次のように記述する必要があります。

base(_Name, _Age);

Humainのコンストラクターの最初に。

于 2012-10-20T15:51:32.503 に答える
1
public Humain(string _Name, int _Age,string _Langue) : base(_Name, _Age)
{
    Lange = _Langue;
}
于 2012-10-20T15:57:19.570 に答える
0

基本クラスのコンストラクターを次のように呼び出してみてください。

class Humain : Personne
{
    public string Langue;
    public Humain(string _Name, int _Age, string _Langue) : base (_Name, _Age)
    {
        Console.WriteLine("Constrcut Humain Called\n");
        Name = _Name;
        Age = _Age;
        Langue = _Langue;
    }
}

要件に応じて、パラメーター化されたコンストラクターの代わりにデフォルトのコンストラクターを呼び出すこともできます。

    public Humain(string _Name, int _Age, string _Langue) : base ()
    {
        Console.WriteLine("Constrcut Humain Called\n");
        Name = _Name;
        Age = _Age;
        Langue = _Langue;
    }
于 2012-10-20T15:58:29.317 に答える