C# 创建一个weatherapp,在一个Github项目之后,我如何才能获得摄氏温度而不是华氏温度?
这是我目前正在使用的项目,它工作得非常完美。正如我在标题中所解释的,我试图用摄氏度来代替华氏度,但我还没有弄明白 也许这甚至不可能,但当我检查代码时,我看到一行代码如下所示:C# 创建一个weatherapp,在一个Github项目之后,我如何才能获得摄氏温度而不是华氏温度?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,这是我目前正在使用的项目,它工作得非常完美。正如我在标题中所解释的,我试图用摄氏度来代替华氏度,但我还没有弄明白 也许这甚至不可能,但当我检查代码时,我看到一行代码如下所示: var unit = IsImperial ? "F" : "C"; Temp = $"Temp: {weatherRoot?.MainWeather?.Temperature ?? 0}°{unit}"; Condition = $"{weatherRoot.Name}:
var unit = IsImperial ? "F" : "C";
Temp = $"Temp: {weatherRoot?.MainWeather?.Temperature ?? 0}°{unit}";
Condition = $"{weatherRoot.Name}: {weatherRoot?.Weather?[0]?.Description ?? string.Empty}";
var单位是否为材料?“F”:“C”代码>以华氏为单位的F和以摄氏为单位的C的平均值 作为单位的是将插入临时字符串中的度符号后,该符号表示°{unit}
,根据IsImperial的值,该符号将变为°C
或°F
要得到摄氏温度,你可以说
var temp = weatherRoot?.MainWeather?.Temperature ?? 0;
if(IsImperial)
temp = (temp - 32) * 1.8;
是as unit将在Temp字符串中的度符号后插入,该符号表示°{unit}
,根据IsImperial的值,该符号将变为°C
或°F
要得到摄氏温度,你可以说
var temp = weatherRoot?.MainWeather?.Temperature ?? 0;
if(IsImperial)
temp = (temp - 32) * 1.8;
我快速浏览了一下这个项目,没有看到实际的转换函数,因此请求可能会处理它
链接的代码只是viewmodel中的显示代码。这实际上只是在UI上显示它的字符串格式行。如果您查看上面的线条,您可以看到:
//Get forecast based on cityId
Forecast = await WeatherService.GetForecast(weatherRoot.CityId, units);
这实际上是向服务器发出请求的原因,并且单位设置略高于以下值:
var units = IsImperial ? Units.Imperial : Units.Metric;
因此,将IsImperial设置为false可能会更改请求的格式,以便以公制形式接收结果。至于F是指华氏温度,C是指摄氏温度——是的。下面的行扩展为{unit}
您引用的行仅使用三元if。只是一点语法上的糖分,扩展到:
string unit;
if (IsImperial)
unit = "F"
else
unit = "C"
我快速浏览了一下这个项目,没有看到实际的转换函数,因此请求可能会处理它
链接的代码只是viewmodel中的显示代码。这实际上只是在UI上显示它的字符串格式行。如果您查看上面的线条,您可以看到:
//Get forecast based on cityId
Forecast = await WeatherService.GetForecast(weatherRoot.CityId, units);
这实际上是向服务器发出请求的原因,并且单位设置略高于以下值:
var units = IsImperial ? Units.Imperial : Units.Metric;
因此,将IsImperial设置为false可能会更改请求的格式,以便以公制形式接收结果。至于F是指华氏温度,C是指摄氏温度——是的。下面的行扩展为{unit}
您引用的行仅使用三元if。只是一点语法上的糖分,扩展到:
string unit;
if (IsImperial)
unit = "F"
else
unit = "C"
要回答这个问题:
var单位是否为实质性单位?“F”:“C”;F的单位是华氏度,C的单位是摄氏度
它是三元运算符格式。它本质上相当于
string unit = String.Empty;
if(IsImperial == true){
unit = "F"
}else{
unit = "C"
}
它只是存储一个字符串供以后使用,比如说“50f”或“50c”,其中F和C等于变量单位
如果您需要让您的应用程序在应用程序的早期某处使用公制单位celcius(可能在应用程序加载时?),请设置Helpers.Settings.IsImperial=false。您不必手动转换温度,因为对RESTAPI的调用将为您实现这一点。这个应用程序可以为你处理所有类似的事情,因为它只是为你显示温度,以华氏摄氏度为单位
编辑:这就是我所做的
public App()
{
Helpers.Settings.IsImperial = false;
.....
}
要回答这个问题:
var单位是否为实质性单位?“F”:“C”;F的单位是华氏度,C的单位是摄氏度
它是三元运算符格式。它本质上相当于
string unit = String.Empty;
if(IsImperial == true){
unit = "F"
}else{
unit = "C"
}
它只是存储一个字符串供以后使用,比如说“50f”或“50c”,其中F和C等于变量单位
如果您需要让您的应用程序在应用程序的早期某处使用公制单位celcius(可能在应用程序加载时?),请设置Helpers.Settings.IsImperial=false。您不必手动转换温度,因为对RESTAPI的调用将为您实现这一点。这个应用程序可以为你处理所有类似的事情,因为它只是为你显示温度,以华氏摄氏度为单位
编辑:这就是我所做的
public App()
{
Helpers.Settings.IsImperial = false;
.....
}
yes as unit将在温度字符串中的度符号后插入,该符号表示“{unit}”,根据ISIMPERIAL的值,该符号将变为°C或°F。请看一看yes as unit将在温度字符串中的度符号后插入,该符号表示“{unit}”这将变成°C或°F,取决于IsImperia的值。看,我把它改成了这个,但我仍然以华氏温度接收它。在Weather.cs文件中,行:publicstringdisplaytemp=>$“Temp:{MainWeather?.Temperature±0}°{Weather?[0]?.Main±string.Empty}”代码>为了使它工作,我也必须调整它吗?把它放在顶部附近,然后用temp
替换MainWeather?.Temperature
everywhere@Slepz,无转换或MainWeather?。温度代码是必需的。OP只需在应用程序的早期将Settings.IsImperial设置为false即可获得Celcius@Benji哦,我还以为他是在逃避审判呢receiving@Slepz不,通过代码查看,有一个helper类来处理设置。根据Settings.IsImperial的值,对rest api的调用将传递“Imperial”或“Metric”作为查询字符串值,并返回正确的数字。我将其更改为该值,但仍将其作为华氏温度接收。在Weather.cs文件中,行:publicstringdisplaytemp=>$“Temp:{MainWeather?.Temperature±0}°{Weather?[0]?.Main±string.Empty}”代码>为了使它工作,我也必须调整它吗?把它放在顶部附近,然后用temp
替换MainWeather?.Temperature
everywhere@Slepz,无转换或MainWeather?。温度代码是必需的。OP只需在应用程序的早期将Settings.IsImperial设置为false即可获得Celcius@Benji哦,我以为我是贵族