我想知道将一个可空类型转换为另一个“兼容”的可空类型的最佳方式是什么(在安全和简洁方面)。
具体而言,从 decimal? 转换为 double? 可以使用以下代码:
public double? ConvertToNullableDouble(decimal? source)
{
return source.HasValue ? Convert.ToDouble(source) : (double?) null;
}
有没有更好的方法来做这件事?也许利用标准转换可以更好地完成?
我想知道将一个可空类型转换为另一个“兼容”的可空类型的最佳方式是什么(在安全和简洁方面)。
具体而言,从 decimal? 转换为 double? 可以使用以下代码:
public double? ConvertToNullableDouble(decimal? source)
{
return source.HasValue ? Convert.ToDouble(source) : (double?) null;
}
有没有更好的方法来做这件事?也许利用标准转换可以更好地完成?
内置转换大获成功!我刚在VS2012 和 VS2010中测试过:
decimal? numberDecimal = new Decimal(5);
decimal? nullDecimal = null;
double? numberDouble = (double?)numberDecimal; // = 5.0
double? nullDouble = (double?)nullDecimal; // = null
只使用显式转换将会把 null 转换成 null,同时将内部的十进制值转换为 double。成功!
通常情况下,如果您想将任何数据类型转换为另一种数据类型,只要它们是兼容的,请使用以下方法:
Convert.ChangeType(your variable, typeof(datatype you want convert to));
for example:
string str= "123";
int value1 = (int)Convert.ChangeType(str, typeof(int));
float? value2 = (float?)Convert.ChangeType(str, typeof(float));
...................................
string str= "123";
try
{
int value1 = (int)Convert.ChangeType(str, typeof(int));
int? value2 = (int?)Convert.ChangeType(str, typeof(int));
float value3 = (float)Convert.ChangeType(str, typeof(float));
float? value4 = (float?)Convert.ChangeType(str, typeof(float));
}
catch(Exception ex)
{
// do nothing, or assign a default value
}