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