Falsche Schnittstellenmethode namens [Duplikat]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Falsche Schnittstellenmethode namens [Duplikat]

Post by Anonymous »

ist der folgende A.NET 8 /C# -Fehler? < /p>

Code: Select all

internal class Program
{
interface IGetString
{
string GetString();
}

class A : IGetString
{
public string GetString() => "A";
}

class B : IGetString
{
public string GetString() => "B";
}

interface ICreate
{
T Create();
}

class C : ICreate, ICreate
{
A ICreate.Create()
{
return new A();
}

B ICreate.Create()
{
return new B();
}
}

static string X(ICreate creator)
{
return creator.Create().GetString();
}

static void Main()
{
ICreate createB = new C();
var s = X(createB);

Console.WriteLine("Result: " + s);
}
}
Erwartete Ausgabe: B, tatsächliche Ausgabe: A
Aufrufe nur die Methode erstellen der ersten implementierten Schnittstelle: ICreate , icreate . Wenn Sie sie austauschen, wird das Ergebnis geändert.

Code: Select all

static string X(ICreate creator) where T : IToString
{
return creator.Create().GetString();
}
Und trotzdem wird Var s = x (createB); es brechen. Es wäre das gleiche Problem, wenn die Instanz als c createB = new C (); bezeichnet würde. Die Referenz ist jedoch explizit auf iCreate , aber sie ruft icreate .

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post