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

时间:2015-11-18 17:11:20

标签: c# linq

我只想查看用户在数组中输入的邮政编码,但是我收到错误;请帮助。

这是我的代码:

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 []'不包含'包含'的定义和   最好的扩展方法重载' Queryable.Contains(IQueryable,string)'需要一个类型为“IQueryable' checkzips
  H:\ checkzips \ checkzips \ Program.cs 23

1 个答案:

答案 0 :(得分:3)

由于f被声明为object并且没有zipcodes属性,因此您的代码无法编译。但是,由于某些原因它似乎会识别f.zipcodesint[],因此您显然拥有与显示的代码不同的代码,这会导致您指出的错误。

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

由于您正在处理邮政编码,因此将它们存储为字符串而不是整数更为合适,因为它们可以以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()表示您没有捕获输入。我怀疑你在调试过程中会发现这一点,但我想我会指出它。