我想根据其他字符串
的值将字符串转换为特定类型假设我有两个字符串str1, str2
。
如果str2
为double
,那么我想调用convert.ToDouble(str1)
并返回Double值。有没有办法实现这个目标?
我尝试使用reflections
(使用methodInfo
对象来调用)
但它仍会再次返回我需要转换的object
。
请帮助..
答案 0 :(得分:3)
该方法尝试将字符串转换为double,如果失败,则返回false。
如果我理解正确,这就是你想要的:
private static double ConditionalConvertToDouble(string str1, string str2) {
double converted;
if (double.TryParse(str2, out converted)) {
// str2 can be converted to a double, so return str1 converted to a double.
return Convert.ToDouble(str1);
} else {
// I'm throwing an exception here if str1 cannot be converted to a double; you
// might want to do something different.
throw new ArgumentException("str1 cannot be converted to a double");
}
}
调用这样的方法:
var d = ConditionalConvertToDouble("11", "22");
答案 1 :(得分:1)
double result;
Double.TryParse(str1, out result);
如果str1是double,则result将有其值,否则result将为0.它不会抛出任何异常。
希望它有所帮助。
答案 2 :(得分:1)
当且仅当“str2”也表示double时,以下方法将尝试从“str1”获取double值。如果其中任何一个数字不是双精度数,它将返回double.NaN。
此方法可避免抛出异常,但仍允许您检查是否有有效数字。
public double GetFirstDoubleIfSecond(string str1, string str2)
{
double myDouble;
if(double.TryParse(str2, out myVal) && double.TryParse(str1, out myVal))
{
return myDouble
}
return double.NaN;
}
如果您希望字符串中包含NaN值,则可以使用以下方法,如果其中一个字符串不是双精度数,则会抛出异常。否则,它将返回“str1”中表示的字符串值。
public double GetFirstDoubleIfSecondWithExceptions(string str1, string str2)
{
double.Parse(str2);
return double.Parse(str1);
}
答案 3 :(得分:-2)
我认为switch-case运营商应该对你有所帮助。您应该根据您的输入字符串指定一些情况并做出正确的决定。如果你真的不知道哪种类型会返回你的方法,你的方法应该返回对象。
public object MyMethod(string str1, string str2)
{
switch(something)
{
case 1:
case 2:
return double.Parse(str1);
break;
case 3:
case 4:
return int.Parse(str1);
break;
default
return null;
}
}
其中某些内容是您应该指定的标准。
之后System.Object.GetType()
方法可以帮助您解决方法返回的类型。