您正在执行引用相等比较,而不是值相等比较。您的代码相当于以下内容:
for (int i = 0; i < Board.Length - 2; i++)
{
object a = Board[i].Content;
object b = Board[i + 1].Content;
object c = Board[i + 2].Content;
if (a == b && a == c &&
(string) a != string.Empty && a != null)
{
MessageDialog msd = new MessageDialog("test");
await msd.ShowAsync();
}
}
这意味着
a == b
正在解析为
<object> == <object>
而不是
<string> == <string>
,其结果相当于
Object.ReferenceEquals(a, b)
。若要获得值相等,应立即强制转换
a
,
b
和
c
既然
一
是字符串,也可以使用
String.IsNullOrEmpty
而不是手动检查两者:
for (int i = 0; i < Board.Length - 2; i++)
{
string a = (string)Board[i].Content;
string b = (string)Board[i + 1].Content;
string c = (string)Board[i + 2].Content;
if (a == b && a == c && !String.IsNullOrEmpty(a))
{
MessageDialog msd = new MessageDialog("test");
await msd.ShowAsync();
}
}