如何将值添加到具有返回类型列表的方法

时间:2015-01-02 00:04:40

标签: c#

我面临的问题是在返回类型列表的方法中添加值。我从另一个班级发送价值。当我想从数组输入值到另一个类的方法时,我给了我一个配对错误。

这是我正在使用的代码:(我要发送数据的类)

public partial class _Default : System.Web.UI.Page
{
   public static double GetDistance()
    {
        string[] rep = new string[] { "51.48797159999999", "-0.16511850000006234", "51.492172", "-0.16144499999995787"};
        List<getLatLong> lst = new List<getLatLong>();      

        for (int i = 0; i < rep.Length; i++)
        {
            lst.Add(new getLatLong { Lat = rep[i], Lng= rep[i + 1] });  //i am getting the error over here
            i++;
        }
     }
}

class getLatLong是我要发送的类,并为其返回类型列表方法添加值:

public class getLatLong
{
    public getLatLong()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    private List<double> lat;

    public List<double> Lat
    {
        get { return lat; }
        set { lat = value; }
    }

    private List<double> lng;

    public List<double> Lng
    {
        get { return lng; }
        set { lng = value; }
    }
}

2 个答案:

答案 0 :(得分:2)

代码不会编译,因为String不是List<double>且编译器不知道如何进行转换。从技术上讲,您需要做的就是初始化对象,如:

lst.Add(new getLatLong {
    Lat = new List<double>() {Double.Parse(rep[i])},
    Lng = new List<double>() {Double.Parse(rep[i + 1])}
  }); 

代码应该编译。也就是说,有很多地方代码并没有完全合理。例如,为什么您的坐标类名为getLatLong,为什么该类包含双精度列表而不仅仅是两个双精度值?在修复编译器错误之前,您可能需要考虑其中的一些事情。祝你好运!祝你好运!

注意:如果您有许多GEO坐标类型的事情要做,您可以考虑引用预先构建的库,例如GeoSpatial

答案 1 :(得分:1)

由于类型不兼容,代码无法编译:

  • 在GetDistance()方法中,rep数组应该是double []类型 比string []或者你需要在创建时转换类型 getLatLong对象。
  • 在GetDistance()方法中,创建getLatLong对象时,有 一个不兼容的类型赋值,其中Lat和Lng对象是 初始化。这些应该初始化为List 对象如下面的代码所示,或者Lat和Lng的类型 getLatLong类应该更改为double而不是List。
public static double GetDistance()
{
   double[] rep = new double[] { 51.4879716, -0.16511850, 51.492172, -0.161445 };
   List<getLatLong> lst = new List<getLatLong>();

   for (int i = 0; i < rep.Length; i++)
   {
        lst.Add(new getLatLong {
            Lat = new List<double> {rep[i]}, 
            Lng = new List<double> {rep[i + 1]}
        });
        i++;
   }

}