C#:动态创建浮点变量

时间:2010-12-08 08:24:23

标签: c# reflection

我有2个字符串:“3.45”和“float”所以这意味着我需要创建一个值为= 3.45的float类型的变量。怎么做?我想我需要使用Reflection但我无法弄清楚如何从字符串中分配float变量。 NB实际上两个字符串都可以有任何值。我需要一些适用于任何类型的通用代码。

由于

3 个答案:

答案 0 :(得分:3)

您可以查看ChangeType方法:

string s1 = "3.45";
string s2 = "System.Single";
Type targetType = Type.GetType(s2, true);
object result = Convert.ChangeType(s1, targetType);

还有一个:

string s1 = "08/12/2010";
string s2 = "System.DateTime";
Type targetType = Type.GetType(s2, true);
object result = Convert.ChangeType(s1, targetType);

要处理特定于文化的转化,例如小数分隔符,日期时间格式,您需要使用overload of this method来传递格式提供程序:

string s1 = "3,45";
string s2 = "System.Single";
Type targetType = Type.GetType(s2, true);
object result = Convert.ChangeType(s1, targetType, new CultureInfo("fr-FR"));

答案 1 :(得分:0)

您可以使用ChangeType完成此操作

        string test = "12.2";
        var sam = Type.GetType("System.Single");    
        var val = Convert.ChangeType(test, sam);

答案 2 :(得分:0)

为什么需要创建float / single类型的“变量”?

我认为你想要对价值做点什么。想想你想用它做什么。

如果您需要将其传递给另一个变量,您可以使用:

object someValue = single.Parse("3.45");

如果你想使用float作为动态参数通过反射调用方法,你可以使用(在大多数示例中为MSDN):

    Type magicType = Type.GetType("MagicClass");
    ConstructorInfo magicConstructor = magicType.GetConstructor(Type.EmptyTypes);
    object magicClassObject = magicConstructor.Invoke(new object[]{});

    // Get the ItsMagic method and invoke with a parameter value of single 3.45

    MethodInfo magicMethod = magicType.GetMethod("ItsMagic");
    object magicValue = magicMethod.Invoke(magicClassObject, new object[]{ single.Parse("3.45")});