这是数据、一个字符数组(板)和一个字符数组列表,这些字符数组由板中不同的三个字符序列组成。
public static char[] board = { 'Q', '-', '+',
'A', '-', 'D',
'+', 'X', 'C' };
static List<char[]> dalist = new List<char[]> {
new char[3] { board[3], board[4], board[5] },
new char[3] { board[0], board[4], board[8] },
new char[3] { board[2], board[4], board[6] },
new char[3] { board[1], board[4], board[7] },
new char[3] { board[0], board[1], board[2] },
new char[3] { board[6], board[7], board[8] },
new char[3] { board[0], board[3], board[6] },
new char[3] { board[2], board[5], board[8] }
};
static void Main(){
foreach (var item in dalist[2])
{
Console.WriteLine(item);
}
// This returns + - + as expected
Console.WriteLine(dalist[2].ToString().Contains("-"));
// This returns false
}
为什么 .Contains 方法意外返回 false?
最佳答案
daList[2]
是一个 char[]
。当您在数组上调用 ToString()
时,它不会将数组的所有元素连接成一个字符串,它会返回类名,在本例中为 System.Char[]
。如果您执行 Console.WriteLine(daList[2].ToString())
,您可以自己看到这一点。由于文字字符串 "System.Char[]"
不包含连字符,因此 daList[2].ToString().Contains("-")
返回 false。
如果您想从字符数组中创建一个字符串,可以使用一个字符串构造函数。我认为这是您真正想要的:
Console.WriteLine(new String(dalist[2]).Contains("-"));
fiddle :https://dotnetfiddle.net/jLpJLV
关于c# - 为什么包含值时 Contains(value) 等于 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38113827/