我正试图让这段代码工作..我已经谷歌搜索已经超过一个小时但我似乎无法让这段代码工作: (我对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中的盒子模型),然后是类,对象和方法?
答案 0 :(得分: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
(每个类的基类)作为参数的方法,但这也意味着您只能访问{中定义的方法{1}}课程。如果要使用Object
中定义的方法,则必须定义方法(第一种方法)或明确告诉编译器您将使用该参数作为类型{{1}的对象(第二种方法)。
话虽如此:考虑Client
类中定义Client
,您可以省略参数并直接访问实例成员。
导致:
Print()
答案 1 :(得分: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();
}
}
}
注意:请记住使用首字母大写,Client
而非client
,Print
而不是print
来命名类,属性和公共方法。您可能想要了解有关static member
和instance member
的更多信息。
答案 2 :(得分: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);
}