0

我试图让这段代码工作..我已经搜索了一个多小时,但我似乎无法让这段代码工作:(我对 C# 完全陌生)

我认为这与打印方法有关。我收到以下错误:

“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(第二种方法)。

话虽这么说:考虑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 clientPrintnot print。您可能想了解更多关于static member和的信息instance 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 回答