[英]C# simple way to do file I/O with big multidimensional (non-jagged) array of bytes
[英]Looking for an element in a non-Jagged 2D Byte array in C#
我創建了一個具有3 行和列(順序 3*3 矩陣)的2D 字節數組,它不是鋸齒狀數組。
var arr = new byte[3,3];
但是現在我必須知道數組中是否存在特定元素。 我嘗試了很多方法,但它們適用於一維數組或鋸齒狀數組。 你能想出一種在整個二維數組中搜索特定元素的方法嗎?
有幾種方法:
byte valueToFind = ...
byte[,] values = new byte[3,3];
var xLength = items.GetLength(0);
var yLength = items.GetLength(1);
bool valueFound = false;
int x = 0;
while (!valueFound && x < xLength)
{
for (int x=0; x<xLength; ++x)
{
int y = 0;
while (!valueFound && y < yLength)
{
valueFound = values[x, y] == valueToFind;
++y;
}
++x;
}
return valueFound;
請注意,索引比實際找到的元素的索引多一:
if (valueFount)
{
xIndex = --x;
yIndex = --y;
}
每個數組都是可枚舉的。 如果您對元素的索引不感興趣:
foreach (var value in values)
{
valueFound = value == valueToFind;
if (valueFound) break;
}
最短的方法:使用LINQ:
using System.Linq;
bool valueFound = values.Any(value => value == valueToFind)
這是做什么的:獲取可枚舉的值序列並從第一個值開始枚舉。 檢查每個值是否等於 valueToFind。 找到后立即停止。 如果找到值,則返回值為真。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.