Frage

ich brauche (für Rapid Prototyping und Bibliotheken Integration) so etwas wie diese (Erweiterungen für übliche Arrays)


double[] d;
d.SetRow(1,{ 1.1 , 2.0 ,3.3});
var r = d.GetRow(1);
d = d.AppendRight(new int[]{1,2,3});
...

Ist so etwas überall existieren? Auf kann es jemand sein implementiert, so brauche ich nicht, dass ich mich für mich zu tun?

War es hilfreich?

Lösung

Dies sollte nicht allzu schwierig sein, sich selbst zu schreiben.

Die Sache sehr vorsichtig sein, der ist, wie Arrays kann als Eigenschaften bearbeitet werden.

So etwas (sehr grob ungetesteten Code, aber sollten Sie eine Idee geben):

public class ArrayRow<T> {
    //add your own ..ctor etc

    T[,] matrix; //don't make this public see http://msdn.microsoft.com/en-us/library/k2604h5s.aspx
    public int Index { get; private set; }

    //note that this will be a copy
    public T[] GetValues() {
        T[] retval = new T[matrix.GetLength(1)];
        for ( int i = 0; i < retval.Length; i++ )
           retval[i] = matrix[Index, i];

        return retval;
    }

    public void SetValues(T[] values)
    //..and so on, you get the idea
}

Dann erweitern Sie das Array:

public static ArrayExtensions {

    public void SetRow<T> ( this T[,] matrix, int rowIndex, T[] values ) {
        //check rowIndex in range and array lengths match
    }

    public ArrayRow<T> GetRow<T> ( this T[,] matrix, int rowIndex ) {
        //check rowIndex in range
        return new ArrayRow<T> ( matrix, rowIndex );
    }
}

Dann können Sie auf dem Typparameter verlassen abgeleitet wird.

Andere Tipps

Hier finden Sie aktuelle Math.NET . Es ist eine Open-Source-Mathematik-Bibliothek. Sie werden wahrscheinlich feststellen, was Sie brauchen.

Sie haben ein Beispiel einer Matrix am Ende dieser verwenden.

Sprachen wie Python Unterstützung Listen mit gemischten Typen. Sie können ein Skript erstellen, Ironpython und nennen es dann von Ihrer C # -Anwendung. Folgen Sie Link zu sehen, wie Sie Ironpython-Skript aus Ihrer Anwendung aufrufen können.

Ich schrieb Matrix Extensions C # Bibliothek Test-Erweiterungen basieren Codegenerierung Design.

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