public Dictionary <int, double> this[int index] { get { var matrix = new Dictionary <int, double>(); // まずは変数に読み込む var length = GLPK.glp_get_mat_row(mip.problem, index + 1, null, null); var key = GLPK.new_intArray(length + 1); var value = GLPK.new_doubleArray(length + 1); GLPK.glp_get_mat_row(mip.problem, index + 1, key, value); // 次にDictionaryにコピーする for (int i = 1; i <= length; ++i) { matrix.Add( GLPK.intArray_getitem(key, i) - 1, GLPK.doubleArray_getitem(value, i) ); } // 最後に後片付けする GLPK.delete_intArray(key); GLPK.delete_doubleArray(value); return(matrix); } }