A.cs enthält diese ->Passing Werte ohne Getter und Setter
namespace Parameterized_Constructor
{
class A
{
private int x, y;
public A()
{ }
public A(int a, int b)
{
x = a;
y = b;
}
public void display()
{
Console.WriteLine("X: {0} Y: {1}", x, y);
Console.ReadLine();
}
public void setX(int k)
{
x = k;
}
public void setY(int l)
{
y = l;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
}
}
Area.cs enthält diese ->
namespace Parameterized_Constructor
{
class Area:A
{
public int calArea()
{
int are;
are = (getX() * getY());
return are;
}
}
}
Program.cs diese enthält ->
namespace Parameterized_Constructor
{
class Program
{
static void Main(string[] args)
{
Area p = new Area();
p.setX(5);
p.setY(10);
p.display();
Console.WriteLine("Area {0}", p.calArea().ToString());
Console.ReadLine();
}
}
}
Also meine Frage ist, können wir das ohne Setter und Getters tun? In C++ brauchen wir solche Dinge nicht richtig? Wir können diese Daten (x, y) nur schützen und den untergeordneten Klassen erlauben, auf sie zuzugreifen. Aber in C# wenn ich das tue Laufzeit zeigt x = 0 und y = 0. Also alles falsch oder ist das die Art und Weise Dinge in C# getan werden? Liegt das an der Kapselungseigenschaft?
Was fragen Sie eigentlich? Ja, Sie können Werte über Methoden anstelle von öffentlichen Eigenschaften übergeben. Fragen Sie, ob dies vorzuziehen ist? Fragen Sie, ob es kompiliert wird? –
Warum? Nur weil Sie das gewohnt sind? Alle Setter und Getter erledigen die von Ihnen erstellten Standardmethoden in kürzerer Form. Sie schaffen mehr Arbeit für sich selbst, die unnötig ist. –
Ich möchte es ohne Setter und Getters tun.! In C++ kann ich Area (int x, inty): A (x, y) verwenden, um diese Werte ohne Getter und Setter an den parametrisierten Konstruktor der Klasse A zu senden. – xxxXXX