比较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();
}
}
}
您正在比较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();
}