So konvertieren Sie T in INumber [geschlossen]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 So konvertieren Sie T in INumber [geschlossen]

Post by Anonymous »

Wie würde ich T in INumber umwandeln? Bitte sehen Sie sich mein Beispiel unten an.
Das Problem hierbei ist, dass ich eine generische Funktion benötige, die unterschiedliche Dinge tut, je nachdem, ob der Typ INumber ist oder nicht.

Code: Select all

void Func(T val) {
if (val is INumber number) { // not compile
// do something with number
return;
}
// T is not INumber - do something else
}
CS0314 Der Typ „T“ kann nicht als Typparameter „TSelf“ im generischen Typ oder der Methode „INumber“ verwendet werden. Es gibt keine Boxing-Konvertierung oder Typparameterkonvertierung von „T“ in „System.Numerics.INumber“.

Das ist alles, was mir einfällt. Aber vielleicht gibt es eine bessere Lösung?

Code: Select all

void Func(T val)
{
if (val is int number)
{
// do something with int
return;
}

if (val is long number)
{
// do something with long
return;
}

// ...

// T is not INumber - do something else
}
Dies funktioniert auch nicht (wird nicht kompiliert, da die beiden Funktionen gleich benannt sind):

Code: Select all

void Func(T val) where T:INumber
{
// do something with number
}

void Func(T val)
{
// do something with not number
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post