在哈希表C#中访问struct

时间:2017-05-01 08:56:14

标签: c# struct hashtable

我有一个包含结构的Hashtable,我试图使用foreach循环来访问每个结构中的元素。但是输出只会给我值标题,而不是让我获取其中的数据。当我尝试使用CityDetail.City时,它只会提供存储在CityDetail中的最新项目,而不是检查Hashtable。感谢您对如何处理此问题的任何建议表示感谢。

     Hashtable CityDataHT = new Hashtable();
     CityData CityDetail = new CityData(); 
     for(int i = 0; i <10; i++)
     {
         //code for getting the various elements for city detail
         CityDetail.City = SplitCity[0];
         CityDetail.Region = SplitCity[1];
         CityDetail.Country = SplitCity[2];
         CityDetail.Latitude = Latitude;
         CityDetail.Longitude = Longitude;        
         CityDataHT.Add(Convert.ToString(i), CityDetail);
      }

      foreach (int k in CityDataHT.Keys)
      {
         Console.WriteLine(CityDataHT[k]);   
         // this line just gives the value title - IP_Project+CityData
      }   

    public struct CityData
    {
        public string City, Region, Country, Latitude, Longitude, Distance;

        public CityData(string p1, string p2, string p3, double p4, double p5, Int32 p6)
        {
            City = p1;
            Region = p2;
            Country = p3;
            Latitude = Convert.ToString(0);
            Longitude = Convert.ToString(1);
            Distance = Convert.ToString(2);

        }
    }

1 个答案:

答案 0 :(得分:1)

为了让你的循环打印其他内容,你需要定义要打印的内容:

foreach (int k in CityDataHT.Keys)
  {
     CityData city = (CityData)CityDataHT[k];
     Console.WriteLine(
       city.City + " - " +city.Country
     );
     // Prints "City - Country"
  }