我想創建一個能夠使用在Vector類(MathNet)上創建的多個擴展的方法。例如,我有Vector擴展名:如何爲擴展創建委託?
public static bool IsNaN(this Vector<double> m)
{
int i = Array.IndexOf(m.ToArray(), double.NaN);
bool b = (i == -1);
b = !b;
return b;
}
我希望能夠使用此擴展AS A PARAMETER。例如,我想寫一些類似於:
public static Vector<double> ApplyExtension(this Matrix<double> x, VectorExtension myOperation)
{
Vector<double> res = new DenseVector(x.ColumnCount, 0);
for (int i = 0; i < x.ColumnCount; i++)
{
res[i] = x.Row(i).myOperation();
}
return res;
}
當然,「VectorExtension」不是一個明確定義的類型。我試圖創建一個deleguate:
public delegate double VectorExtension(this Vector<double> d);
但是,它不起作用。有人能幫助我嗎?非常感謝!
有一些inconsistancies這裏。你使它通用,但沒有使用泛型參數。 'res'也是'Vector',但返回類型是'Vector '。也許他們應該都是'Vector ',以及這個函數的參數? –
Servy
如果你想使它完全通用,看起來你需要泛型參數,'TSource'和'TResult',因爲他在這裏進行映射。 – Servy
@Servy非常感謝您的評論。我將添加映射。首先,我認爲他正在做一些扁平化。 OPs不一致也很難糾正。 –