转换时创建错误,而不是

时间:2015-06-26 07:25:17

标签: c# casting

我没有代码的和平:

private static void Casting<T>(T obj)
{
    String str = (String)obj; //Error
    str = obj as String;
}

String str = (String)obj返回编译时错误

  

&#34;错误CS0030无法转换类型&#39; T&#39;到&#39;字符串&#39;&#34;

让我们说,我同意这个错误。 但为什么第二行没有相同的行为呢? 所以我的问题是 - 为什么&#34; as&#34;铸造时不要生成错误吗?

2 个答案:

答案 0 :(得分:2)

使用as时,如果无法进行投射,则会返回null,而不是像普通&#39;那样抛出异常。演员会做的。

请参阅:https://msdn.microsoft.com/en-us/library/cscsdfbt.aspx

答案 1 :(得分:1)

使用(String)obj你对编译器说“嘿,我绝对相信这种类型可以转换为string - 就这样做吧!”在as运算符中的位置 - 当你允许编译器执行它的工作并说'如果可能的话,请尝试将其转换为我'...

像这样:D