0

私はこのコードを機能させようとしています..私はすでに1時間以上グーグルで検索していますが、このコードを機能させることができないようです:(私はC#がまったく初めてです)

メソッドprintと関係があると思います。次のエラーが表示されます。

タイプ 'object' には 'Voornaam' の定義が含まれておらず、タイプ 'object' の拡張メソッド 'Voornaam' が見つかりませんでした

// naam: Dylan Westra
// klas: i1b
// datum 07-09-2013
using System;

namespace les2
{

    public class client
    {
        public string Voornaam;
        public string Achternaam;
        public string Adres;
        public int Salaris;

        public client (string voornaam, string achternaam, string adres, int salaris)
        {
            Voornaam = voornaam;
            Achternaam = achternaam;
            Adres = adres;
            Salaris = salaris;
        }
        public void print (object obje)
        {
            Console.WriteLine (obje.Voornaam + " " + obje.Achternaam + " " + obje.Adres + " " + obje.Salaris);
        }

    }

    class MainClass
    {
        public static void Main (string[] args)
        {
            client gegevens1 = new client("Dylan", "Westra", "Rozengracht 34", 1200);
            //client gegevens2 = new client("Rosa", "de Gruijter", "Rozengracht 34", 200);
            client.print(gegevens1);
        }
    }
}

編集:画像のようなもの (html のボックス モデルなど) はありますが、クラス、オブジェクト、メソッド用のものはありますか?

4

3 に答える 3

2
public void print (object obje){
   Console.WriteLine (obje.Voornaam + " " + obje.Achternaam + " " + obje.Adres + " " + obje.Salaris);
}

メソッドを次のように変更します。public void print (Client obje)

または最初にキャストします:

public void print (object obje) {
   obje = (Client) obje;
   // OR
   obje = obje as Client;
   Console.WriteLine (obje.Voornaam + " " + obje.Achternaam + " " + obje.Adres + " " + obje.Salaris);
}

この背後にある理由は、Object(すべてのクラスの基本クラスである) をパラメーターとして取るようにメソッドを定義することですが、これはクラスで定義されたメソッドにしかアクセスできないことも意味しますObject。で定義されたメソッドを使用する場合はClient、メソッドをそのように定義する (最初のアプローチ) か、そのパラメーターを型のオブジェクトとして使用することをコンパイラーに明示的に伝えるClient(2 番目のアプローチ) 必要があります。

つまり、 がクラスでPrint()定義されていることを考慮Clientすると、パラメーターを省略して、インスタンス メンバーに直接アクセスできます。

この結果:

public void Print() {
 Console.WriteLine(Voornaam + " " + Achternaam + " " + Adres + " " + Salaris);
}
于 2013-09-07T15:31:48.523 に答える
1

スタイルについてOOPは、次のようにする必要があります。

using System;

namespace les2
{

  public class client
  {
    public string Voornaam;
    public string Achternaam;
    public string Adres;
    public int Salaris;

    public client (string voornaam, string achternaam, string adres, int salaris)
    {
        Voornaam = voornaam;
        Achternaam = achternaam;
        Adres = adres;
        Salaris = salaris;
    }
    public void print()
    {
        Console.WriteLine (Voornaam + " " + Achternaam + " " + Adres + " " + Salaris);
    }
  }

  class MainClass
  {
    public static void Main (string[] args)
    {
        client gegevens1 = new client("Dylan", "Westra", "Rozengracht 34", 1200);
        gegevens1.print();
    }
  }
}

: クラス、プロパティ、およびパブリック メソッドの名前の最初の文字を大文字にし、Clientnot client, Printnotにすることを忘れないでくださいprint。との詳細を参照しstatic memberinstance memberください。

于 2013-09-07T15:34:04.950 に答える
1

オブジェクトをパラメーターとして渡す必要がある場合は、メソッドclientでパラメーターの型を定義します。print

    public void print (client obje)
    {
        Console.WriteLine (obje.Voornaam + " " + obje.Achternaam + " " + obje.Adres + " " + obje.Salaris);
    }

これにより、オブジェクトで使用できるフィールド/メソッドがコンパイラに通知されます。

ただし、 がprint内で定義されclientている場合、オブジェクトをメソッドに渡す必要はありません。clientフィールドに直接アクセスできます:

public void print ()
    {
        Console.WriteLine (Voornaam + " " + Achternaam + " " + Adres + " " + Salaris);
    }
于 2013-09-07T15:34:11.550 に答える