C#中Cast和Convert之间的区别

Rel*_*ity 4 c# decimal

我有一个sql datareader ...我必须从中获取一个十进制值.

有什么区别

  1. (十进制)的DataReader [ "百分比"]

  1. Convert.Todecimal(DataReader的[ "百分比"])

什么是两种方法的prons和cos ....

cdh*_*wie 11

仅当返回的对象datareader["percent"]属于该类型时,强制转换才会成功Decimal.当对象属于可转换为的任何类型时,转换将成功Decimal.这包括int,long,short等或者更一般,任何实现IConvertible并返回一个有用的值IConvertible.ToDecimal()可以传递给Convert.ToDecimal().

例如:

csharp> object a = (int)1;

csharp> a.GetType();
System.Int32

csharp> var dec = (decimal)a;
System.InvalidCastException: Cannot cast from source type to destination type.
  at Class3.Host (System.Object& $retval) [0x00000] in <filename unknown>:0
  at Mono.CSharp.Evaluator.Evaluate (System.String input, System.Object& result, System.Boolean& result_set) [0x00000] in <filename unknown>:0
  at Mono.CSharpShell.Evaluate (System.String input) [0x00000] in <filename unknown>:0

csharp> var dec = Convert.ToDecimal(a);

csharp> dec;
1

csharp> dec.GetType();
System.Decimal
Run Code Online (Sandbox Code Playgroud)

  • @Harvey:这是[Mono interactive C#shell](http://www.mono-project.com/CsharpRepl). (3认同)