使用Convert命令进行显示转换

3 本我 4周前 86次点击

前面示例中使用的显式类型转换,与前面其他的示例有一些区别。前面使用ToDouble()等命令把字符串值转换为数值,显然,这种方式并不适用于所有字符串。

例如,如果使用ToDouble()把Number字符串转换为double值,在执行代码时会报错。

可以看出,执行失败。为成功执行此类转换,所提供的字符串必须是数值的有效表达方式,该数还必须是不会溢出的数。数值的有效表达方式是:首先是一个可选符号(加号或减号),然后是0位或多位数字,一个可选的句点后跟一位或多位数字,接着是一个可选的e或E,后跟一个可选符号和一位或多位数字,除了还可能有空格(在这个序列之前或之后),不能有其他字符。利用这些可选的额外数据,可将-1.2451e-24这样复杂的字符串识别为数值。

对于这些转换要注意的一个问题是,它们总是要进行溢出检查,checked和unchecked关键字以及项目属性设置不起作用。

下面的示例包括前面发帖列出的许多转换类型。它声明和初始化许多不同类型的变量,再在它们之间进行隐式和显式转换。

static void Main(string[] args)

{

//声明变量

short shortResult, shortVal = 4;

int intVal = 67;

long longResult;

float floatVal = 10.5f;

double doubleResult, doubleVal = 99.999;

string stringResult, stringVal = "17";

bool boolVal = true;

//变量转换

WriteLine("变量转换示例\n");

doubleResult = floatVal * shortVal;

WriteLine($"隐式转换->double:{floatVal}*{shortVal}->{doubleResult}");

shortResult = (short)floatVal;

WriteLine($"显示转换->short:{floatVal}->{shortResult}");

stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVal);

WriteLine($"显示转换->string:\"{boolVal}\"+\"{doubleVal}\"->"+$"{stringResult}");

longResult = intVal + Convert.ToInt64(stringVal);

WriteLine($"混合->long:{intVal}+{stringVal}->{longResult}");

//按下任意键结束

ReadKey();

}

这个示例包含前面介绍的所有转换类型,既有像前面简短代码示例中的简单赋值,也有在表达式中进行的转换。必须考虑这两种情况,因为每个非一元运算符的处理都可能要进行类型转换,而不仅是赋值运算符。例如:

shortVal * floatVal

其中把一个short值与一个float值相乘。在这样的指令中,没有指定显式转换,所以如有可能,就会进行隐式转换。在这个示例中,唯一有意义的隐式转换是把short值转换为float值(因为把float值转换为short值需要进行显式转换),所以这里将使用隐式转换。

shortVal * (short)floatVal

有趣的是,两个short值相乘的结果并不会返回一个short值。因为这个操作的结果很可能大于32767(这是short类型可以存储的最大值),所以这个操作的结果实际上是int值。

这个转换过程初看起来比较复杂,但只要按照运算符的优先级把表达式分解为不同的部分,就可以弄明白这个过程。


共 1 条评论

好了成功啥也没看懂

添加一条新评论

登录后可以发表评论 去登录