比较c#中的Object数组

时间:2014-09-14 13:53:33

标签: c# comparison

我想将对象类型数组中的元素与用户输入进行比较。为此,我编写了以下代码。代码中没有错误,但我发现对象比较不能像我预期的那样工作。如何编辑我的代码以将用户输入与预定义数组进行比较?

class Program
{
    static void Main(string[] args)
    {
        object[] Mathfunction = new object[] { '+','-','*','/'};
        Console.WriteLine("Enter");
        object input = Console.ReadLine();
        for(int i=0;i<4;i++)
        {
            if (Mathfunction[i] == input)
            {
                Console.WriteLine("done");
                Console.ReadLine();
            }
        }
    }

4 个答案:

答案 0 :(得分:3)

您将string与盒装char进行比较 那些不会是平等的。

您应该将变量声明为您使用的实际数据类型而不是object;然后,编译器会告诉你你做错了什么,这样你就可以解决它。

答案 1 :(得分:1)

您是否有任何理由需要将char转换为对象?如果不是,我建议你将它转换回char []并进行比较。 否则,当您比较两个对象时,它实际上是比较两个引用,而不是(char)值。并且由于在启动数组时创建了一个对象,因此用户输入一个对象,其中两个永远不会相同,并且比较永远不会返回true。

答案 2 :(得分:1)

我现在按照我的预期更改了我的程序。

class Program
{
    static void Main(string[] args)
    {
        object[] Mathfunction = new object[] { '+','-','*','/'};
        Console.WriteLine("Enter");
        String input = Console.ReadLine();
        for(int i=0;i<4;i++)
        {
            String str = (Mathfunction[i].ToString());
            if (String.Equals(str,input))
            {
                Console.WriteLine("done");
                Console.ReadLine();
            }
        }
    }

答案 3 :(得分:0)

尝试这样的事情,在你的代码中输入将在一个对象中,而你使用一个对象数组来存储字符,你可以这样做:

object[] Mathfunction = new object[] { '+', '-', '*', '/' };
Console.WriteLine("Enter");
object input = Console.ReadLine();
string[] inputString = input.ToString().Split(' ');
bool isEqual = true;
for (int i = 0; i < 4; i++)
{
    if (Mathfunction[i].ToString() != inputString[i])
    {
        isEqual = false;
    }            
}
if (isEqual)
{
    Console.WriteLine("done");
    Console.ReadLine();
}