Frage

...ist es möglich?

Kann ich beispielsweise diese einfache Funktion hinzufügen ...

public static double Deg2Rad(double degrees) {
    return Math.PI / 180 * degrees;
}

...zum Convert Klasse? Also (mit der Standardeinstellung ... "using") können Sie anrufen

double radians = Convert.Deg2Rad(123);

Kann das getan werden? Wenn das so ist, wie?

War es hilfreich?

Lösung

Nein, das können Sie nicht, aber Sie können eine Erweiterungsmethode hinzufügen double und nenn es wie wie

double x = 180.0;
double y = Math.Cos( x.Deg2Rad() );
double z = Math.Sin( 0.5.Pi() );

Fügen Sie in einer statischen Klasse die folgende Erweiterungsmethode hinzu:

public static class ExtensionMethods
{
    public static double Deg2Rad(this double angle)
    {
        return Math.PI*angle/180.0;
    }

    public static double Pi(this double x)
    {
        return Math.PI*x;
    }
}

Andere Tipps

Nein, es ist nicht möglich. Sie könnten Erweiterungen verwenden, wenn Convert war nicht static, aber nein.

Sie könnten eine Erweiterung hinzufügen double Verwenden Sie jedoch die this Stichwort:

public static double Deg2Rad(this double degrees) {
    return Math.PI / 180 * degrees;
}

Und benutze es so:

double radians = (123D).Deg2Rad();

Sie müssen Ihre Methode in a einsetzen static Klasse, damit es funktioniert.

Sie können irgendwie bekommen, was Sie wollen. C# hat "Erweiterungsmethoden". Auf diese Weise können Sie Methoden zu einer anderen Klasse hinzufügen, auch wenn sich diese Klasse in einer anderen Versammlung befindet, für die Sie den Quellcode nicht haben. Sie können jedoch keine statische Funktionen zu einer anderen Klasse hinzufügen. Sie können nur Instanzmethoden hinzufügen.

Weitere Informationen finden Sie unter MSDN -Erweiterungsmethoden.

Nein, das können Sie nicht, aber Sie müssen es nicht wirklich - Sie können stattdessen nur Ihre eigene statische Klasse deklarieren, zum Beispiel:

public static class MyConvert
{
    public static double Deg2Rad(double degrees) 
    {
        return Math.PI / 180 * degrees;
    }
}

Verwendungszweck:

double radians = MyConvert.Deg2Rad(123);

(Offensichtlich MyConvert ist ein Müllname, aber Sie haben die Idee).

Der einzige Unterschied zwischen dem obigen und der Methode im System hat die Methode Convert Klasse ist das, wenn es auf dem ist Convert Klasse Es sieht nach einer integrierten Funktion aus, aber Sie werden Schwierigkeiten haben, mich zu überzeugen, dass das eigentlich eine gute Sache ist (ich möchte wissen, wann ich Framework-Code aufrufe, und Code, der intern gepflegt wurde).

Abgesehen von dem, was hier gesagt wurde, gibt es auch eine andere Option, die ist Teilklassen (Dies gilt nicht für Konvertiten).

Wenn die Klasse teilweise deklariert ist, können Sie über eine andere Teilklasse Menthods hinzufügen, auch wenn sie sich in einer anderen Versammlung befindet (DLL).

Aber auch hier muss die Klasse ursprünglich teilweise erklärt werden, damit dies funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top