Jag har information om tre olika personer i tre olika klasser och ska med en funktion kunna skriva ut all information om dessa tre personer. Om varje person finns ett antal olika rader med information. <b>Men jag får inte de olika koderna att fungera</b> är nog inte det felmeddelande du får och innehåller inte mycket beskrivning om vad som gick fel, men i alla fall: Ber om ursäkt för de dåliga beskrivningarna, ska bättra mig, men eftersom jag hade väldigt många olika versioner var det svårt att beskriva på ett bra sätt. ahaa från den koden är det helt klart vad som är fel, nämligen följande rad: Angående problem 2. felmeddelanden indikerar att du försöker skriva kod utanför en metod. Men vad är det du försöker åstadkomma? Din arvstruktur verkar något märklig... Jag har information om tre olika personer i tre olika klasser och ska med en funktion kunna skriva ut all information om dessa tre personer. Om varje person finns ett antal olika rader med information. Raden Den specifika Employee finns egentligen under myEmployee som är ett nytt objekt skapat via klassen Employee Jag kan ha missforstatt det hela, men har kommer min mycket forenklade tolkning av hur det borde se ut:Ett problem kvar - Arv
t.ex.
myEmployee.DisplayEmployee(); <-- visar all information om just den personen
vet inte riktigt hur jag ska förklara det på något annat sätt tyvärr
Jag har testat på två olika sätt..
Test ett :
using System;
public class ShowProject : Employee
{public ShowProject() {}
public override void FooMethod() {}
Employee.DisplayEmployee();
//myProject.DisplayProjectname();
//myConsult.DisplayConsult();
//myEmployee.DisplayEmployee();
//myProjectemployee.DisplayPr ojectemployee();
} //avslutar class projekt
ger felmeddelande :
Invalid token '(' in class, struct, or interface member declaration
vilket då syftar på raden Employee.DisplayEmployee();
Test 2:
using System;
public class ShowProject : Employee
{public ShowProject() {}
public override void FooMethod() {}
Employee.ToString();
//myProject.DisplayProjectname();
//myConsult.DisplayConsult();
//myEmployee.DisplayEmployee();
//myProjectemployee.DisplayPr ojectemployee();
}
ger felmeddelandet:
Invalid token '(' in class, struct, or interface member declaration
vilket syftar på raden Employee.ToString();
Tacksam för svar
/MariaSv: Två problem: ToString och Arv
public override string ToString() {
return "Hello World";
}
återigen, lär dej beskriva problemen bättre än "det funkar inte".
public class Parent {
// ...
public Parent() {}
public virtual void FooMethod() {}
}
public class Child : Parent {
public Child() {}
public override void FooMethod() {}
}
Sv:Två problem: ToString och Arv
Nu har jag testat denna kod:
public override string ToString()
{
return "{0};{0};{0};{0}"; employeeName; employeePay; employeeWorktime; employeeOvertimecost;
}
och får då dessa error angående employeeName, employeePay, employeeWorktime och employeeOvertimecost.
Only assignment, call, increment, decrement, and new object expressions can be used as a statement Sv: Två problem: ToString och Arv
return "{0};{0};{0};{0}"; employeeName; employeePay; employeeWorktime;
I c# kan du endast ha ett returvärde, och det du *antagligen* försöker göra är att returnera en formaterad sträng och då bör du använda dej av string.Format
return string.Format("{0},{1},{2},{3}", employeeName, employeePay, employeeWorktime);
sen får du fila på formatsträngen så att du får formatet du vill ha...
Sv:Två problem: ToString och Arv
Nu har jag testat på två olika sätt..
Test ett :
using System;
public class ShowProject : Employee
{public ShowProject() {}
public override void FooMethod() {}
Employee.DisplayEmployee();
//myProject.DisplayProjectname();
//myConsult.DisplayConsult();
//myEmployee.DisplayEmployee();
//myProjectemployee.DisplayProjectemployee();
} //avslutar class projekt
ger felmeddelande :
Invalid token '(' in class, struct, or interface member declaration
vilket då syftar på raden Employee.DisplayEmployee();
Test 2:
using System;
public class ShowProject : Employee
{public ShowProject() {}
public override void FooMethod() {}
Employee.ToString();
//myProject.DisplayProjectname();
//myConsult.DisplayConsult();
//myEmployee.DisplayEmployee();
//myProjectemployee.DisplayProjectemployee();
}
ger felmeddelandet:
Invalid token '(' in class, struct, or interface member declaration
vilket syftar på raden Employee.ToString(); Sv: Två problem: ToString och Arv
Sv:Två problem: ToString och Arv
t.ex.
myEmployee.DisplayEmployee(); <-- visar all information om just den personen
vet inte riktigt hur jag ska förklara det på något annat sätt tyvärr Sv: Två problem: ToString och Arv
Employee.ToString();
Forsoker kora en statisk metod som heter ToString().
Vilken Employee ar det du forsoker skriva ut? Du maste kora din ToString()-metod pa ett instansierat objekt (tex myEmployee).
Var ar den specifika Employee du forsoker skriva ut info om?Sv:Två problem: ToString och Arv
Sv: Två problem: ToString och Arv
class BaseEmployee
{
protected string name;
protected decimal pay;
protected decimal worktime;
public BaseEmployee(string name, decimal pay, decimal worktime)
{
this.name = name;
this.pay = pay;
this.worktime = worktime;
}
public virtual string ToString()
{
return name;
}
}
class Employee:BaseEmployee
{
public Employee(string name, decimal pay, decimal worktime):base(name, pay, worktime)
{}
public override string ToString()
{
return string.Format("{0}, {1}, {2}", name, pay.ToString("#######.00"), worktime.ToString());
}
}
class Printer
{
public static void PrintEmployee(Employee emp)
{
Console.WriteLine(emp.ToString());
}
public static void PrintEmployees(List<Employee> list)
{
foreach (Employee emp in list)
{
Console.WriteLine(emp.ToString());
}
}
}
Sen kallar du bara de statiska metoderna i Printer-klassen och skickar in de Employees du vill skriva ut.
Har inte riktigt forstatt varfor du vill anvanda arv..
mvh
Magnus