在C#中进行类型转换

MAC*_*MAC 19 c#

什么是型铸造,这有什么用?它是如何工作的?

请提供示例教程,我找不到任何搜索Google的好文章.

Jon*_*eet 64

转换通常是告诉编译器虽然它只知道某个值是某种通用类型的问题,但您知道它实际上是更具体的类型.例如:

object x = "hello";

...

// I know that x really refers to a string
string y = (string) x;
Run Code Online (Sandbox Code Playgroud)

有各种转换运算符.该(typename) expression表格可以做三件不同的事情:

  • 取消装箱转换(例如从盒装整数到int)
  • 用户定义的转换(例如,转换XAttributestring)
  • 类型层次结构中的引用转换(例如,转换objectstring)

所有这些都可能在执行时失败,在这种情况下将抛出异常.

as运营商,在另一方面,从不抛出异常-相反,转换的结果是null,如果它失败:

object x = new object();
string y = x as string; // Now y is null because x isn't a string
Run Code Online (Sandbox Code Playgroud)

它可用于取消装箱到可以为空的值类型:

object x = 10; // Boxed int
float? y = x as float?; // Now y has a null value because x isn't a boxed float
Run Code Online (Sandbox Code Playgroud)

也有隐式转换,例如从intlong:

int x = 10;
long y = x; // Implicit conversion
Run Code Online (Sandbox Code Playgroud)

这涵盖了您感兴趣的一切吗?

  • 乔恩,很好的回答! (2认同)
  • @jon Skeet给出了答案,它没有涵盖它曾经发生的一切? (2认同)