显示C#中使用三元运算符的整数数组的包含

本文关键字:运算符 三元 整数 包含 数组 显示 | 更新日期: 2023-09-27 18:22:30

我只想检查用户在数组中输入的邮政编码是否正确,但我遇到了错误;请帮忙。

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace checkzips
{
      class Program
      {  
           public static object f;
           public static void Main(string[] args)
           {       
               // create an integer array for package delivery service
               int[] zipcodes = { 07847, 07848, 07866, 07801, 07808, 07898, 07836,    07854, 07823, 07845 };
               // display original values of array
               Console.WriteLine("All zip codes to which the company delivers packages:");
               foreach (var elements in zipcodes)
                   Console.WriteLine("{0}", elements);
               // prompt a user to enter a zip code
               Console.WriteLine("Enter a zipcode:");
               Console.ReadLine();
               // search the array using foreach loop 
               Console.WriteLine("", f.zipcodes.Contains(Console.ReadLine()) ? string.Empty : "not");
        }
    }
}

我在上一个Console.WriteLine语句中得到一个错误:

错误CS1929"int[]"不包含"Contains"的定义,并且最佳扩展方法重载"Queryable.Contains(IQueryable,string)"需要类型为"IQueryable'checkzips"的接收器
H: ''checkzips''checkzips ''Program.cs 23

显示C#中使用三元运算符的整数数组的包含

发布时,由于f被声明为object,并且没有zipcodes属性,因此您的代码不会编译。然而,由于某种原因,它似乎将f.zipcodes识别为int[],因此显然您的代码与显示的代码不同,这导致了您指示的错误。

问题是Console.ReadLine()返回string,并且不能通过向整数集合传递字符串值来对其使用Contains

由于您处理的是ZIP代码,因此将它们存储为字符串而不是整数更合适,因为它们可以以0开头并包含非数字字符(-)。我怀疑你想要:

  string[] zipcodes = { "07847", "07848", "07866", "07801", "07808", "07898", "07836","07854", "07823", "07845" };
  ...
  string zip = Console.ReadLine();
  Console.WriteLine("",f.zipcodes.Contains(zip) ? string.Empty : "not");

请注意,最好将Console.ReadLine放在WriteLine之外,这样可以验证输入,提高调试能力等。

还要注意,您有一个杂散Console.ReadLine(),您没有捕获它的输入。我怀疑你会在调试过程中发现这一点,但我想我会指出这一点。