如何在c#中调用方法?

如何在c#中调用方法?,c#,C#,我需要调用一个方法,然后打印它,现在当输入正确的温度时,我得到.NaN作为输出 using System; using System.Security.Cryptography.X509Certificates; namespace Bastun2 { class Pogram { public static void Main(string[] args) { double temperatureF = double.

我需要调用一个方法,然后打印它,现在当输入正确的温度时,我得到.NaN作为输出

using System;
using System.Security.Cryptography.X509Certificates;

namespace Bastun2
{
    class Pogram
    {

        public static void Main(string[] args)
        {
            double temperatureF = double.NaN;
            double temperatureC = double.NaN;
            string input = string.Empty;
            bool inputIsOkay = false;


            while (!inputIsOkay) //Tells you to repeat until input is true
            {
                Console.WriteLine("Enter temperature in numbers."); //Asks for temperature

                input = Console.ReadLine(); //Input temperature

                if (!double.TryParse(input, out temperatureF)) //Prevents you for using letters
                {
                    Console.WriteLine($"'{input}' is not a valid input. Use numbers and , not ."); //Tells you not to use letter or "."
                }
                else if (temperatureF < 163.4)//Repeat if temperature is under 163.4
                {
                    //temperatureC = (temperatureF - 32) * 5 / 9; //Converts Farneheight to Celcius
                    Console.WriteLine($"Temperature is to low, enter a higher temperature.");  //Tells you that temperature is to low and asks you to input a higher temperature
                }
                else if (temperatureF > 170.6)//Repeat if temperature is to high
                {
                    //temperatureC = (temperatureF - 32) * 5 / 9; //Converts Farneheight to Celcius
                    Console.WriteLine($"Temperature is to high, enter a lower temperature.");//Tells you that temperature is to high and asks you to input a lower temperature
                }
                else
                {
                    inputIsOkay = true; //kick you out of the loop if input is true
                }
            }



            //temperatureC = (temperatureF - 32) * 5 / 9; //Converts Farneheight to Celcius
            //Console.ReadLine(calculateC);
            Console.WriteLine($"{temperatureC}°C, temperature is within acceptable parameters");//prints C and tell you that temperature is acceptable
        }
        public static double CToF(double temperatureF, double temperatureC)
        {
            temperatureC = (temperatureF - 32) * 5 / 9;
            return temperatureC;
        }
    }
}
使用系统;
使用System.Security.Cryptography.X509证书;
名称空间Bastun2
{
类图
{
公共静态void Main(字符串[]args)
{
双温度f=double.NaN;
双温c=double.NaN;
字符串输入=string.Empty;
bool-inputIsOkay=false;
while(!inputIsOkay)//告诉您重复,直到输入为真
{
Console.WriteLine(“以数字形式输入温度”);//询问温度
input=Console.ReadLine();//输入温度
如果(!double.TryParse(输入,输出温度))//阻止您使用字母
{
Console.WriteLine($“{input}”不是有效的输入。请使用数字和,而不是“);//告诉您不要使用字母或”
}
else if(temperatureF<163.4)//如果温度低于163.4,则重复此操作
{
//temperatureC=(temperatureF-32)*5/9;//将法尔内海转换为塞尔修斯
Console.WriteLine($“温度过低,请输入更高的温度。”);//告诉您温度过低,并要求您输入更高的温度
}
else if(temperatureF>170.6)//如果温度过高,则重复此操作
{
//temperatureC=(temperatureF-32)*5/9;//将法尔内海转换为塞尔修斯
Console.WriteLine($“温度过高,请输入较低的温度。”);//告诉您温度过高,并要求您输入较低的温度
}
其他的
{
inputIsOkay=true;//如果输入为true,则将您踢出循环
}
}
//temperatureC=(temperatureF-32)*5/9;//将法尔内海转换为塞尔修斯
//Console.ReadLine(calculateC);
Console.WriteLine($“{temperatureC}°C,温度在可接受的参数范围内”);//打印C并告诉您温度是可接受的
}
公共静态双CToF(双温EF、双温EC)
{
温度c=(温度f-32)*5/9;
返回温度c;
}
}
}

根据您对原文的回复,我可以从一开始就看到一个明显的问题。您从未设置temperatureC变量的值,这就是为什么在打印输出时总是得到NaN的原因

您已经通过调用许多方法来调用它们,例如
Console.WriteLine(…)
,等等

您只需在
while
循环下的主方法底部执行此操作:

temperatureC=CToF(temperatureF,temperatureC);
然后输出
temperatureC
的值,就像您使用的:

Console.WriteLine($“{temperatureC}°C,温度在可接受的参数范围内”);
另一个提高代码效率和可读性的小建议是更改CToF方法,只需执行以下操作:

公共静态双CToF(双温度)
{
返回(温度F-32)*5/9;
}
如果您决定接受改进的想法,那么您可以这样调用该方法:

temperatureC=CToF(temperatureF);

您在发布的代码中调用了各种方法。你是什么意思?我想在Console.Writeline中调用CToF,以便在Writeline中获取temperatureC的值。也许我对什么是什么有点困惑,我对这个很陌生是的,你是
Console.WriteLine(…)
正在调用一个方法。噢,不知道作为一个方法计算,已经改变了我的第一反应,我如何在Console WriteLine中调用CToF?
Console.WriteLine(CToF(tempF,tempC))您的CToF()方法实际上应该只有第一个参数。计算时不需要C值。它只是返回它。