Ich habe ein Problem mit Überlademethoden mit unterschiedlichen Einschränkungen, die ausschließlich auftreten, gefunden. Das ist mein Beispiel:Mitglied mit der gleichen Signatur, die bereits mit anderen Typenbeschränkungen definiert wurde
public class A
{
public void Do<T>() where T : class
{
}
public void Do<T>() where T : struct
{
}
}
Und das kompiliert nicht mit dem folgenden Fehler "Mitglied mit der gleichen Signatur bereits definiert". Ist es möglich, beide Bedingungen auf einmal zu erfüllen, oder ist es nur die Einschränkung des C# -Compilers?
Wenigstens hoffe ich, dass es richtig war, zu sagen, dass diese beiden Beschränkungen ausschließen und es ist nur Beschränkung , Recht? :) –
@IlyaChernomordik: Es ist eine Einschränkung, aber eine ziemlich vernünftige IMO. –
Aber was ist falsch daran, dies zuzulassen? Ich muss nur verschiedene Aktionen ausführen, je nachdem, ob es eine Klasse ist (ich kann prüfen, ob es null ist) oder wenn es nur lang ist (dann weiß ich, dass der Wert da ist). Der Ausweg sollte also nur sein, den Methoden, die es zu sein scheint, unterschiedliche Namen zu geben. Ich will den schrecklichen Weg definitiv nicht benutzen :) –