Как поместить значения в функцию 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) »имеет некоторые недопустимые аргументы».

Где я иду не так? Здесь мы надеемся, что кто-то, у кого немного больше знаний, может дать мне толчок в правильном направлении.

благодаря

0
Я хотел добавить, что C #/.NET/Visual Studio делает замечательные вещи с комментариями кодов. Отметьте «Комментарии XML» broadcast.oreilly.com/2010/ 06/понимание-с-XML-comments.h & ZWNJ; TML . XML-комментарии отображаются в вашем коде (например, выше), а также отображаются в Visual Studio во время кодирования. Вы видите их сейчас, когда вы наводите указатель на класс или метод .NET framework.
добавлено автор D-Sect, источник

5 ответы

"M" in C# is a string, not a char; you need to use 'M'.

Ошибка, которую вы получили, в основном говорит: «Я не могу найти функцию под названием postcode.postcode_finder.distance , которая принимает параметры типов, которые вы им даете».

Вы должны были получить ошибку компилятора seccond, говорящую Аргумент 5: не можете преобразовать из 'string' в 'char' , который сузил бы проблему дальше.

10
добавлено
Возможно, если OP является признанным noob, вы должны объяснить, как сообщение об исключении и как оно ведет вас к ответу ... И у вас есть. Еще более заслуженный +1 сейчас. ;-)
добавлено автор Chris, источник
@Rawling избил меня.
добавлено автор HaemEternal, источник
Бинго! Сказал вам, что это будет легко. Смутно так ... спасибо!
добавлено автор Dan Solo, источник
Не удалось получить вторую ошибку компилятора. Если бы у меня был тот, который вы упомянули выше, я уверен, что даже я бы поставил 2 и 2 вместе успешно. Вероятно...
добавлено автор Dan Solo, источник

Ошибка говорит все:

наилучшее перегруженное соответствие метода для   'postcode.postcode_finder.distance (двойной, двойной, двойной, двойной,   char) 'имеет некоторые недопустимые аргументы

Другими словами, компилятор не может найти метод с именем postcode.postcode_finder.distance с подписью, которую вы предоставили.

В C# литерал char выражается путем включения одного символа в одинарные кавычки. Литерал string выражается путем включения символов в двойные кавычки. Если вы измените "M" на 'M' в коде, эта ошибка должна исчезнуть.

4
добавлено

"M" is a String, not a char. ( because of the double quote).

Поэтому компилятор не принимает ваш вызов на расстояние функции, которое ожидает символ.

поместите 'M' , и все должно быть в порядке. ( char ar между одинарными кавычками)

2
добавлено

Вам нужно использовать «M» в качестве последнего параметра - так вы указываете константу char в C #

2
добавлено

Your method takes a char as parameter.
You pass a string (marked with "), chars are declared with '.
So it should be like: distance(32.9697, -96.80322, 29.46786, -98.53506, 'M');

2
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot