检测数组中的值的好方法是什么?如果该值为真,则不能在该元素中放入其他值?C#

检测数组中的值的好方法是什么?如果该值为真,则不能在该元素中放入其他值?C#,c#,C#,假设我有一个2D数组: int[,] array = { {1,2,4}, {5,6,7} }; 现在我们希望用户在该数组中输入一个值。比如说7。因此,现在阵列看起来如下所示: int[,] array = { {7,2,4}, {5,6,7} }; 现在,另一个用户甚至同一个用户试图在同一个元素中输入7。我想让程序否认这一点。因此,它会给用户一条类似这样的消息:“如果元素包含一个7,则不能在该元素中输入其他值。这是永久性的,一

假设我有一个2D数组:

int[,] array = {
       {1,2,4}, 
       {5,6,7}
}; 
现在我们希望用户在该数组中输入一个值。比如说7。因此,现在阵列看起来如下所示:

int[,] array = {
       {7,2,4}, 
       {5,6,7}
}; 
现在,另一个用户甚至同一个用户试图在同一个元素中输入7。我想让程序否认这一点。因此,它会给用户一条类似这样的消息:“如果元素包含一个7,则不能在该元素中输入其他值。这是永久性的,一旦7位于该数组的任何元素中,除非重新启动程序,否则它永远无法更改

我知道这可能看起来很简单,我本可以用数组来寻找解决方案。但我想知道一种好的方法来做这件事,而不是猜测。或者破解它

List.IndexOf()方法似乎是我可能会使用的方法,但这是一个数组,这是一个列表,我应该将其更改为列表吗?我真的不知道。我甚至不确定使用IndexOf是否是一种好方法


所以我问大师们。

创建一个类
MatrixElement.cs

公共类矩阵素
{
公共int值{get;set;}
公共布尔值永久更改{get;set;}
}
矩阵中的所有元素都将其属性
isPermanentlyChanged
更改为
false
作为默认值。然后您可以按如下方式填充矩阵:

矩阵元素[,]数组=
{
{new MatrixElement{Value=1},new MatrixElement{Value=2},new MatrixElement{Value=4},
{new MatrixElement{Value=6},new MatrixElement{Value=6},new MatrixElement{Value=7}
};
只需检查要更改的索引中的值。对于Instance:

var userValueToChange=7;
if(数组[0,0].isPermanentlyChanged==false)
{
数组[0,0]。Value=userValueToChange;
数组[0,0]。isPermanentlyChanged=true;
}
其他的
{
WriteLine($“元素包含{userValueToChange}时出错,无法在此元素中输入其他值”);
}

如果我理解正确,这将帮助您解决问题。如果没有,请在下面进行评论,以便我可以编辑它。

我正在尝试理解,您是否将7添加到数组的数组[1]“?或者您要将其添加到主数组中?我知道您要对拒绝部分执行什么操作,我只是想弄清楚数组的最终结构需要是什么样子。基本上,如果我理解正确,您希望避免在同一子元素/子数组中重复值。为什么7会覆盖第一个数组中的1?可能是
if(array.Cast().Any(item=>item==7)){/*7在数组中*/}
这看起来像是一堆奇怪的约束。首先,为什么是2D数组?这很重要,还是对简单的1D数组“工作”相同?其次,您只是在寻找类似于
someArray.Contains(someNumber)的东西吗
?第三,您有一个数组,显然该数组允许只更改一次,是吗?或者任何索引项的值允许只更改一次?或者您希望在数组中只允许一个特定值更改一次?