C#类型转换(字符串到int)

时间:2016-10-21 14:19:39

标签: c# string int type-conversion

我目前正在浏览项目列表(酒店),如果内容编辑器输入超过1晚的价格,我需要找出每晚的价格。

if (!string.IsNullOrEmpty(resource))
{
    var results = JsonConvert.DeserializeObject(resource).ToString();
    if (!string.IsNullOrEmpty(results))
    {
        var hotels = JsonConvert.DeserializeObject<ContainerHotelViewModel>(results).Hotels;

        if (daysDuration > 1)
        {
            foreach (var hotel in hotels)
            {
                string convertInt = hotel.BaseRate;
                int nightRate;
                int.TryParse(hotel.BaseRate, out nightRate);
                convertInt = nightRate / daysDuration;                    
            }
        }

        return SortHotels(hotelIds, hotels);
    }
}

所以我的理解是,我已将hotel.BaseRatestring转换为int。所以我有必要将hotel.BaseRate除以daysDuration以获得每晚的价格,因为它们现在都是整数。请告诉我我做错了什么,因为我在foreach循环中的最后一行代码给了我错误信息:

  

无法将int类型隐式转换为字符串。

6 个答案:

答案 0 :(得分:4)

您在行中先将convertInt定义为字符串:

string convertInt = hotel.BaseRate;

答案 1 :(得分:3)

string convertInt = hotel.BaseRate;
int nightRate;
int.TryParse(hotel.BaseRate, out nightRate);
convertInt = nightRate / daysDuration;

您首先将convertInt声明为字符串,然后尝试将其设置为等式中的响应。

删除第一行并将最后一行设置为:

int convertInt = nightRate / daysDuration;

答案 2 :(得分:2)

您无法将int转换为字符串(convertInt是此实例中的字符串)。

但是,你可以这样做:

convertInt = (nightRate / daysDuration).ToString();

另外,作为旁注: 如果你正在处理金钱,你不应该使用Int,就好像你在3晚住宿15英镑一样,答案是5.33英镑 - 但是int不能保留小数位。

答案 3 :(得分:1)

请更改您的代码。

Old code :  convertInt = nightRate / daysDuration;  

New code :  convertInt = (nightRate / daysDuration).ToString();  

请使用新的代码行更新您的旧代码行。

谢谢。

答案 4 :(得分:1)

你的问题在这里:

foreach (var hotel in hotels)
{
    string convertInt = hotel.BaseRate;
    int nightRate;
    int.TryParse(hotel.BaseRate, out nightRate);
    convertInt = nightRate / daysDuration;  
}

convertIntstring,您尝试将int值格式nightRate / daysDuration保存到其中。您需要使用(nightRate / daysDuration).ToString()

所以你的行:

convertInt = nightRate / daysDuration;

应该是:

convertInt = (nightRate / daysDuration).ToString();

答案 5 :(得分:0)

您的错误是混合类型。程序需要一个字符串,其中有一个int,所以你必须在int上调用.ToString()。更好的是重构代码,以便在调用计算之前使用适当的类型定义所需的所有变量。顺便说一句,推荐的货币类型是Decimal。 int的问题在于你不能代表它的十进制单位,例如分数,并且使用double会出现舍入问题。