在int,float,double,long和string之间转换

奇人

我正在做一个游戏,我从json数据库中读取一些数据。所有数据库都包含相似的数据,尽管差异很小。一些将“幂”存储为字符串,而另一些将其存储为数字。还有一种将其存储为字符串或数字的方法,因为有时“ power”可以为“ 1 + X”或其他形式。另外,有些将“ power”变量存储在名称“ power”下,而另一些使用“ pwr”。因此,我正在编写一种轻松获取这些内容的方法。在我的应用程序(用C#编写)中,我得到了包含所有信息的字典。所以我目前有这个:

void TryGetValueFromJson<T>(ref T variableToFill, string[] possibleValueNames, Dictionary<string,object> info) {
    foreach (string valueName in possibleValueNames) {
        object value;
        if (info.TryGetValue(valueName, out value)) {
            //I'm stuck here
            break;
        }
    }
}

顾名思义,variableToFill是我正在为其读取值的类中的变量。string []是不同数据库中此变量的所有可能名称(“ power”,“ pwr”)。“ info”变量是我从服务器获取的json。

因此,现在我必须将不同的值转换为所需的类型。如果我的variableToFill是一个字符串,但是数据库将其作为int值,则应该对其进行转换。虽然我不确定如何正确执行此操作。

阿夫纳·沙哈尔·克斯坦(Avner Shahar-Kashtan)

Convert.ChangeType方法是您的朋友。它是为您完成大量工作的那些方法之一,并且可以节省大量代码。它依赖于实现IConvertible接口的类型,但是幸运的是,大多数原始类型都可以:

void TryGetValueFromJson<T>(ref T variableToFill, string[] possibleValueNames, Dictionary<string,object> info) 
{
    Type outputType = typeof(T);
    foreach (string valueName in possibleValueNames) 
    {
        object value;
        if (info.TryGetValue(valueName, out value)) 
        {
            variableToFill = (T)Convert.ChangeType(value, outputType);
            break;
        }

    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Scala 中 Long 和 Double 之间的转换和比较

int float 与 double 的转换偏好

在int和double之间转换的价格是多少?

可为空的double和int之间的转换失败

在float和double之间选择

如何修复 E2015“pow(double,double) 和 pow(float,int) 之间的歧义”

如何将String转换为Int和Long?

int()和long()之间的区别

VS2012和VS2015之间的float / double转换的区别

如何将 long 或 double int 数据类型转换为 String inFfirebase dataSnapshot

在Biginit与Long和Int64之间进行转换是否安全

在betwen int和double之间进行转换时出现意外结果

byte []和float []之间的转换结果错误

C ++-将long转换为float或double值

在String和Regexp之间转换

在int和double之间进行运算

将ASCII字符串转换为int / float / long

将long int转换为float时,numpy失去精度

calcuale ---- OverflowError:long int太大,无法转换为float

将long.MaxValue强制转换为int和将float.MaxValue强制转换为int有什么区别?

无法根据规则“安全”将数组数据从 dtype('float64') 转换为 dtype('int64') !int 和 float 之间的 astype 函数

在UInt和Int之间快速转换

如何在int *和enum *之间转换?

将double(或float)转换为int会发生什么?

XSLT:将int转换为float / double值

C ++ unsigned int和unsigned long int之间的区别

SQL Server int 和 MS Access VBA long 数据类型之间的数据类型转换错误

使用 short 和 long 代替 int 和 double (C++)

Seq [Int]和List [Int]之间的区别和转换