2015-10-28 49 views
5

我有一個自定義的Matrix類,我想實現一個類似於double [,]可以使用的自定義對象初始值設定項,但似乎無法弄清楚如何執行它。如何爲Matrix類實現乾淨的自定義對象初始值設定項

理想我想有它看起來像這樣

var m1 = new Matrix 
     { 
      { 1.0, 3.0, 5.0 }, 
      { 7.0, 1.0, 5.0 } 
     }; 

截至目前我有一個普通構造器接受這樣的

var m1 = new Matrix(new double[,] 
     { 
      { 1.0, 3.0, 5.0 }, 
      { 7.0, 1.0, 5.0 } 
     }); 
呼叫

public Matrix(double[,] inputArray){...} 

簽名

和一個對象初始化程序,它通過繼承IEnumerable<double[]>接口和實施公共無效Add(double[] doubleVector)方法

var m2 = new Matrix 
     { 
      new [] { 1.0, 3.0, 5.0 },     
      new [] { 7.0, 1.0, 5.0 } 
     }; 

,當我嘗試使用對象初始化器,我想我得到不具有Add過載,它利用參數X個,其中X是多少的編譯器錯誤我試圖創建的列(即在我提供的例子3)中。

我該如何設置我的課程才能像我提供的參數?

回答

5

限定Add方法與params關鍵字並忽略結束在數組元素,這是長於矩陣寬度

public void Add(params double[] doubleVector) 
{ 
    // code 
} 

如果陣列較短,默認元素被留下(0

// sample 
var M = new Matrix() 
{ 
    { 1.2, 1.0 }, 
    { 1.2, 1.0, 3.2, 3.4} 
}; 
+0

學到了今天。謝謝您的幫助! – PlTaylor

+1

這個類是不是需要實現IEnumerable才能使用這個? –

+1

但矩陣應該有相等的長度和寬度 –

相關問題