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

如何将值放入C#函数并得到结果?,c#,C#,我相信这很容易回答,这可以归因于我对C#有点“耳濡目染”,但我在调用函数并在函数中输入值,然后在屏幕上写入响应之前遇到了一个问题 函数和调用在PHP中工作得非常好(我在PHP中有更多的经验),因此我认为问题更多地在于在C#中使用正确的语法,而不是其他任何东西。也许我还在试着用我的PHP帽子写它 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.

我相信这很容易回答,这可以归因于我对C#有点“耳濡目染”,但我在调用函数并在函数中输入值,然后在屏幕上写入响应之前遇到了一个问题

函数和调用在PHP中工作得非常好(我在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)”的最佳重载方法匹配“有一些无效参数”

我哪里做错了?我希望有人能给我一个正确的方向

谢谢

“M”在C#中是一个
字符串
,而不是
字符
;您需要使用
'M'

您得到的错误基本上是“我找不到一个名为
postcode.postcode\u finder.distance
的函数,该函数接受您给定类型的参数”


您应该已经收到第二个编译器错误,说明
参数5:无法从'string'转换为'char'
,这将进一步缩小问题的范围。

您需要使用'M'作为最后一个参数——这就是如何在C中指定char常量的方法。

字符串,而不是
字符。(因为双引号)

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


'M'
放进去,它应该是正常的。(
char
ar在单引号之间)

您的方法将
char
作为参数。
您传递一个字符串(用
标记“
”),字符用
声明。

所以它应该是这样的:
距离(32.9697,-96.80322,29.46786,-98.53506,'M');

错误说明了一切:

匹配的最佳重载方法 '邮政编码。邮政编码查找器。距离(双精度,双精度,双精度, char)“”具有一些无效参数

换句话说,编译器找不到名为
postcode.postcode\u finder.distance
且带有您提供的签名的方法


在C#中,
char
文本通过在单引号中包含单个字符来表示。
string
文本通过在双引号中包含字符来表示。如果更改
,则“
'M'
在您的代码中,此错误应该消失。

如果OP是一个已承认的noob,您应该解释异常消息如何以及它如何引导您找到答案。。。你有。现在更值得+1。;-)答对 了告诉过你这很容易。令人尴尬的是。。。谢谢没有得到第二个编译器错误。如果我得到了你上面提到的那个,我相信即使是我也会成功地将2和2组合在一起。可能……我想补充一点,C#/.NET/Visual Studio在代码注释方面做得很好。查看“XML注释”。XML注释显示在您的代码中(如上所述),并且在编写代码时在VisualStudio中以整洁的方式显示。现在,当您将鼠标悬停在.NET framework类或方法上时,可以看到它们。