如何将值放入C#函数并获得结果?

时间:2013-01-09 13:17:58

标签: c#

我确信这将很容易回答,并且可以归因于我使用C#而不是“耳朵后面”,但是我在调​​用函数并将值放入函数之前写入了在屏幕上回复。

函数和调用在PHP中完美运行(我有更多的经验)所以我认为问题更多的是在C#中使用正确的语法而不是其他任何东西。也许我还在尝试用我的PHP帽子写它?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace postcode
{
  public partial class postcode_finder : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
        //Example lat/long values entered below

        Response.Write(distance(32.9697, -96.80322, 29.46786, -98.53506, "M"));
    }

    public double distance(double lat1, double lon1, double lat2, double lon2, char unit) {

        double theta = lon1 - lon2;

        double dist = Math.Sin(deg2rad(lat1)) * Math.Sin(deg2rad(lat2)) + Math.Cos(deg2rad(lat1)) * Math.Cos(deg2rad(lat2)) * Math.Cos(deg2rad(theta));

        dist = Math.Acos(dist);
        dist = rad2deg(dist);
        dist = dist * 60 * 1.1515;
        if (unit == 'K')
        {
            dist = dist * 1.609344;
        }
        else if (unit == 'N')
        {
            dist = dist * 0.8684;
        }

        return dist;

    }

    //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    //::  This function converts decimal degrees to radians             :::
    //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    public double deg2rad(double deg)
    {
        return (deg * Math.PI / 180.0);
    }

    //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    //::  This function converts radians to decimal degrees             :::
    //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    public double rad2deg(double rad)
    {
        return (rad / Math.PI * 180.0);
    }

  }
}

我得到的错误是''postcode.postcode_finder.distance(double,double,double,double,char)的最佳重载方法匹配'有一些无效的参数'。

我哪里错了?这里希望有更多技术诀窍的人可以给我一个正确方向的推动。

由于

5 个答案:

答案 0 :(得分:10)

C#中的{p> "M"string,而不是char;你需要使用'M'

你得到的错误基本上说“我找不到一个名为postcode.postcode_finder.distance的函数,它接受你给它的类型的参数”。

你应该收到一个第二个编译错误,说Argument 5: cannot convert from 'string' to 'char'这会使问题进一步缩小。

答案 1 :(得分:4)

错误说明了一切:

  

最佳重载方法匹配   'postcode.postcode_finder.distance(double,double,double,double,   char)'有一些无效的论点

换句话说,编译器找不到具有您提供的签名的postcode.postcode_finder.distance方法。

在C#中,通过用单引号括起单个字符来表示char字面值。通过用双引号括起字符来表示string字面值。如果您在代码中将"M"更改为'M',则此错误应该消失。

答案 2 :(得分:2)

你需要使用'M'作为最后一个参数 - 这就是你在C#中指定一个char常量的方法

答案 3 :(得分:2)

"M"String,而不是char。 (因为双引号)。

因此,编译器不接受您对需要char的函数distance的调用。

'M',它应该没问题。 (char ar在单引号之间)

答案 4 :(得分:2)

您的方法以char为参数 您传递一个字符串(标有"),字符用'声明 所以它应该是:distance(32.9697, -96.80322, 29.46786, -98.53506, 'M');