Für den unteren Indexer sollte es so sein, dass für get {} Benutzer MitarbeiterID oder Vornamen übergeben kann und für Satz {} nur MitarbeiterID übergeben kann. HierKönnen wir die Anzahl der Indexer für den gesetzten Operator in Indexern beschränken?
ist der Code:
public Employee this[int employeeid = 0,string firstname = ""]
{
get
{
if (employeeid != 0)
{
return Employees.FirstOrDefault(emp => emp.No == employeeid);
}
else
{
return Employees.FirstOrDefault(emp => emp.FirstName == firstname);
}
}
set
{
if (employeeid == value.No)
{
Employees.FirstOrDefault(emp => emp.No == employeeid).FirstName = value.FirstName;
Employees.FirstOrDefault(emp => emp.No == employeeid).LastName = value.LastName;
}
else
{
ArgumentException argEx = new ArgumentException("Falied to update");
System.Windows.Forms.MessageBox.Show(argEx.Message);
}
}
}
Ich möchte nur wissen, ist es eine Syntax, die die Anzahl und Art der Indexer auf Set-Operationen übergeben werden beschränken. Oder fügen Sie einfach einen neuen Indexer für den Satz hinzu, der offensichtlich funktioniert.
abgelegt unter „nur weil Sie können, bedeuten doesnt Sie sollten“ – Jamiec
OK Parameter für Satz gemeinsam sein werden und erhalten. Und es gibt nur die Funktionalität der optionalen Parameter und nicht einschränkende Parameter. Zum Beispiel, wenn eine Funktion zwei Parameter int und string hat. Dann, wenn der Benutzer int oder string aber nicht beide geben kann. Denkst du nicht, wir brauchen eine neue Funktionssyntax, die dies ermöglicht. Indexer und Funktionen sind unterschiedlich, aber in Bezug auf Parameter teilweise ähnlich. Also stelle ich diese Frage. –
@NithinB Sie müssen Methode Überladung verwenden, die für Ihren Fall ist, dass optionale Parameter. – user3185569