[英]Get "corners" of a 2d array
好吧,我有一個真正愚蠢的問題。
我有一個可空整數的二維數組。 我想獲得該數組的不可為空的角 - 例如,下面數組的角將是13, 76, 39, 87
。
int?[,] array = new int?[3,9]
{
{ null , 13 , 21 , null , null , 52 , 69 , 76 , null },
{ 9 , 15 , null , 36 , 45 , null , null , 77 , null },
{ null , null , null , 39 , 48 , 53 , null , 79 , 87 },
};
由此,我想分別從第一行和最后一行中獲取第一個和最后一個非空元素。
2D arrays 很麻煩,但如果你迭代它們,它們的行為就像一個長數組
var w = array.GetLength(1);
var h = array.GetLength(0);
var a = array.Cast<int?>();
var ff = a.First(e => e.HasValue);
var fl = a.Take(w).Last(e => e.HasValue);
var lf = a.Skip((h-1)*w).First(e => e.HasValue);
var ll = a.Last(e => e.HasValue);
寬度為 9,高度為 3,Casting 將其轉換為可枚舉的int?
這意味着你的角落是第一個非 null,最后一個非 null 在最初的 9,第一個非 null 跳過 18 和最后一個非 null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.