c# - 为什么包含值时 Contains(value) 等于 false?

标签 c#

这是数据、一个字符数组(板)和一个字符数组列表,这些字符数组由板中不同的三个字符序列组成。

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/

相关文章:

c# - 在 iframe 中加载时清除 url 缓存

javascript - iframe点击使div显示隐藏

c# - 返回零的随机数生成器

c# - 在 MVC 3 的多个位置搜索 .cshtml?

c# - 2017 年巴西夏令时开始时间不正确

c# - 如何对 CollectionViewSource 的组进行排序

具有无限参数的 c# 方法或具有数组或列表的方法?

c# - 不同方式制作并发程序的区别

c# - 如何复制一个对象的实例,如果该对象发生变化,该实例不会?

c# - 在通用 C# 类中链接隐式运算符