这是数据,Char-Array(电路板)和Char-Arrays列表,它们由电路板组成不同的三个字符序列。
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?
答案 0 :(得分:3)
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("-"));
答案 1 :(得分:1)
您可以使用contains
-
方法检查datalist2 Contains
字符array
Console.WriteLine(dalist[2].Contains('-'));
答案 2 :(得分:0)
您的dataList
不是一个字符数组,而是一个数组列表。那么你所追求的是第三个列表中的第二个元素,或者[2] [1]中的元素。所以你需要这个:
Console.WriteLine(datalist[2][1].ToString().Contains("-"));
可以进一步简化为
Console.WriteLine(datalist[2][1] == '-');
另一种方法是检查列表是否包含字符:
Console.WriteLine(datalist[2].Contains('-'));
为什么你的方法不起作用的共鸣是,当在一个字符数组上调用ToString
时,它不会简单地组合你的角色,但创建类似于System.Char[]
的东西,这显然不是你的预期。 ToString
- 方法不够智能,无法首先检查其中的元素并使用字符串表示。但是它只返回包含元素的类型。
答案 3 :(得分:0)
dalist[2]
不是单个值,当您在char数组上调用char
时,它是ToString()
数组,您将获得&#34; System.Char[]
&#34;不是&#34; + - +&#34;正如你在想的那样..
Console.WriteLine(dalist[2][1].ToString().Contains("-"));
// This will returns true
如果您要检查数组中是否存在项目,请删除ToString()
并查找该字符。
Console.WriteLine(dalist[2].Contains('-'));
答案 4 :(得分:0)
这个检查是否&#34; System.Char []&#34;包含&#34; - &#34;结果为FALSE
Console.WriteLine(dalist[2].ToString().Contains('-'));
这个检查是否[&#34; +&#34;] [&#34; - &#34;] [&#34; +&#34;]包含&#34; - &#34;结果为TRUE
Console.WriteLine(dalist[2].Contains('-'));
答案 5 :(得分:0)
DataSource
或
string dalist2 = dalist[2][0].ToString() + dalist[2][1].ToString() + dalist[2][2].ToString();
Console.WriteLine(dalist2.Contains("-"));
答案 6 :(得分:0)
将代码从.ToString()
修改为.ToList()
即更改代码如下
bool isContains = dalist[2].ToList().Contains('-');