比较c#中的Object数组

本文关键字:数组 Object 中的 比较 | 更新日期: 2023-09-27 18:21:45

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

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();
            }
        }
    }

比较c#中的Object数组

您正在比较string s和盒装char s。
这是不平等的。

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

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

我已经按如下方式更改了我的程序,现在它可以按我的预期工作了。

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();
            }
        }
    }

尝试这样的操作,在您的代码中,当您使用对象数组来存储字符时,输入将在一个对象中,您可以执行以下操作:

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();
}