[英]Access 2d array with point in wpf C#
我有一個類的2d數組。 數組的大小非常大(大約3000 * 3000),使用普通的行和列方法訪問數組需要花費很多時間。 為此,我想使用指針來訪問數組。
以下是我的數組代碼:
班級定義:
Class BoxData
{
Size _bound;
bool _isFilled=false;
Color _color=Colors.White;
public Size Bounds
{
get
{
return _bound;
}
set
{
_bound=value;
}
}
public bool IsFilled
{
get
{
return _isFilled;
}
set
{
_isFilled=value;
}
}
public Color FillColor
{
get
{
return _color;
}
set
{
_color=value;
}
}
}
在應用程序中用作數組的類:
BoxData[,] boxData=new BoxData[3000,3000];
我想用指針訪問boxData。
謝謝
嘗試鋸齒狀陣列而不是多維陣列,它們在Microsoft的CLR實現中更快
BoxData[][] boxData=new BoxData[3000][];
for (int i=0; i<3000; i++)
boxData[i] = new BoxData[3000];
也許你可以使用結構而不是BoxData的類?
Struct是一種值類型:當您聲明數組時,所有內容都將被填充。 您將不再使用循環來創建new BoxData()
實例。
var x = new BoxData[3000,3000]; // Populated array of BoxData
由於struct vs class限制,你必須以這種方式刪除初始化程序...
struct BoxData
{
Size _bound;
bool _isFilled; // = false;
Color _color; // = Color.White;
public Size Bounds
{
get
{
return _bound;
}
set
{
_bound = value;
}
}
public bool IsFilled
{
get
{
return _isFilled;
}
set
{
_isFilled = value;
}
}
public Color FillColor
{
get
{
return _color;
}
set
{
_color = value;
}
}
}
...並使用循環初始化您的默認值會快得多。
for (int j = 0; j < 3000; j++)
for (int i = 0; i < 3000; i++)
x[i, j].FillColor = Color.White;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.