4
bool myBool = true;
byte myByte;
  • 此转换运行myByte = Convert.ToByte(myBool);
  • 此转换未运行myByte = (byte)myBool;

对于新手(me):为什么以上不同?

4

1 回答 1

9

Convert.ToByte是一种方法——它可以做任何想做的事,可能是这样的:

return input ? (byte) 1 : (byte) 0;

强制转换是语言级别的操作。它要求语言知道转换本身,或者所涉及的类型之一具有用户定义的转换以及正确的输入和输出类型。bool从 转换为时,这两种情况都不是byte

基本上,该语言没有定义强制转换的含义,因此编译器禁止它。

于 2012-06-18T07:35:26.513 回答