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