我没有代码的和平:
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;铸造时不要生成错误吗?
答案 0 :(得分:2)
使用as
时,如果无法进行投射,则会返回null
,而不是像普通&#39;那样抛出异常。演员会做的。
答案 1 :(得分:1)
使用(String)obj
你对编译器说“嘿,我绝对相信这种类型可以转换为string
- 就这样做吧!”在as
运算符中的位置 - 当你允许编译器执行它的工作并说'如果可能的话,请尝试将其转换为我'...
像这样:D