我有一个类,它继承自实现索引器的列表列表
public class TwoDList<T>: List<List<T>>
{
public T this[int row, int column]
{
get;
set ;
}
}
关于新建它并像这样使用它:
TwoDCollection<int> target = new TwoDCollection<int>();
var linearSequecValue = target[0, 2];
但是我得到一个编译时错误“没有方法重载'这个'需要2个参数”
答案 0 :(得分:2)
它工作正常(假设您提供get
和set
机构);是这样的:
TwoDList<T>
/ TwoDCollection<T>
?List<T>
/ IList<T>
吗?我还应该说:从List<T>
继承来提供功能通常是个坏主意; 封装会更好。
工作示例:
class Program
{
static void Main()
{
TwoDList<int> target = new TwoDList<int>();
var linearSequecValue = target[0, 2];
}
}
public class TwoDList<T> : List<List<T>>
{
public T this[int row, int column]
{
get { return this[row][column]; }
set { this[row][column] = value; }
}
}
答案 1 :(得分:1)
我认为你应该使用:
TwoDList<int> target = new TwoDList<int>();
var linearSequecValue = target[0, 2];
这是我的尝试:
public int Test()
{
TwoDList<int> target = new TwoDList<int>();
target.Add(new List<int>(new int[] {3,5,6}));
target.Add(new List<int>(new int[] {2,1,8}));
target.Add(new List<int>(new int[] {1,3,4}));
return target[1, 2];
}
public class TwoDList<T> : List<List<T>>
{
public T this[int row, int column]
{
get { return this[row][column]; }
set { this[row][column] = value; }
}
}
答案 2 :(得分:0)
试试这个
TwoDList<int> target = new TwoDList<int>();
var linearSequecValue = target[0, 2];
你可以试试这个
public class TwoDList<T> : List<List<T>>
{
public T this[int row, int column]
{
get { return this[row][column]; }
set { this[row][column] = value; }
}
}
而不是
public class TwoDList<T>: List<List<T>>
{
public T this[int row, int column]
{
get;
set ;
}
}
答案 3 :(得分:0)
public class TwoDList<T> : List<List<T>>
{
public T this[int row, int column]
{
get { return (this[row])[column]; }
}
}
TwoDList<int> target = new TwoDList<int>();
var linearSequecValue = target[0, 2];
工作正常
TwoDCollection的定义是什么?
答案 4 :(得分:0)
您的indexer
中有derived type
,但应该有custom implementation in your indexer body
(for,get; set;
),因为您已经继承了Lists<>
use like this
} 强>
对于现在,而不更改代码,您可以var linearSequecValue = target[0][2];
:
{{1}}
希望这有帮助!